python for循环中list [:]的用法

时间:2019-04-10 01:16:44

标签: python-3.x list for-loop

我对两个相似的表达式感到困惑,但结果却不同:

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很陌生

1 个答案:

答案 0 :(得分:0)

在示例(1)中,“ a”仅首先引用子列表。当您重新分配该引用时,引用只会更改,因此对“ b”中原始的“ a”没有影响。

在示例(2)中,保留'a'的引用是因为您没有重新分配它,而是因为LHS上的[:]运算符将'c'复制到了'a'的内容中。因此,引用不会改变,并且改变自然已经是'b'的一部分