我是 Python 的初学者,我发现有关可变性的内容非常困惑且不直观。给定一个列表:
lst = [[1, 2, 3], [4, 5, 6]]
并尝试在 for 循环中更改列表。
for i in lst:
i = "test"
我知道这不会更改列表。但是:
for i in lst:
i[1] = "test"
令我惊讶的是,引用子列表会导致以下结果:
[[1, 'test', 3], [4, 'test', 6]]
我试图用可视化工具来理解,但我不明白。有人可以用简单的语言解释一下吗?谢谢。
最佳答案
在第一种情况下,您只需复制对元素的引用。
i ---> lst[n]
在后一种情况下,您正在取消引用 引用,并更改数据(不是在副本中):
i[i] ---> lst[n][i]
因此分配给 i[n]
将指向实际的可变对象,而不是它的副本。
关于python - 为什么子列表在 for 循环中是可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13888779/