因为我不知道应该给我的这种混乱题目,所以我只是怀疑
a = [1,2,3,4,5]
b = a
for i in range(len(a)):
c = (i - 4)
print(a)
print(b)
b[c] = a[i]
print(a)
print(b)
输出
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 1, 4, 5]
[1, 1, 1, 4, 5]
...
为什么列表a
的值会在循环的每个步骤中得到?
答案 0 :(得分:2)
你的问题在于这一行:
b = a
这不符合你的想法。特别是,它不制作a
的副本。分配后,b
和a
都引用同一个对象。因此,对b
的任何更改也会反映在a
中。
强制复制的一种方法是使用切片语法:
b = a[:]