我对两个相似的表达式感到困惑,但结果却不同:
1)
b=[[1,2],[3,4]]
for a in b:
c=a+[5]
a=c
print(b)
2)
b=[[1,2],[3,4]]
for a in b:
c=a+[5]
a[:]=c
print(b)
和结果:
1) [[1, 2], [3, 4]]
2) [[1, 2, 5], [3, 4, 5]]
为什么在for循环中使用a [:]会改变原始b列表?
预先感谢:) ..我对Python很陌生
答案 0 :(得分:0)
在示例(1)中,“ a”仅首先引用子列表。当您重新分配该引用时,引用只会更改,因此对“ b”中原始的“ a”没有影响。
在示例(2)中,保留'a'的引用是因为您没有重新分配它,而是因为LHS上的[:]运算符将'c'复制到了'a'的内容中。因此,引用不会改变,并且改变自然已经是'b'的一部分