python - 为什么子列表在 for 循环中是可变的?

标签 python loops sublist mutability

我是 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/

相关文章:

position - Lisp - 从位置移除

python - 绘图中的多个系列

python - 在 Python 中使用 scikit learn 进行线性判别分析

玛雅中的Python : listAttr with uiTypes

javascript - 加载动态日历以在该月的正确日期开始

python - 将值列表附加到子列表

Python "classobj"错误

c++ - 在循环条件下调用 const-vector size() 似乎缺少优化

python - 在Python turtle 中使用while循环控制游戏

python - 如何将列表元素分成两部分?