我读过Python list+list vs.list.append(),这是一个类似的问题,但我的问题更多地与下面的代码有关
a = [[]] * 4
b = [[]] * 4
a[3] = a[3] + [1]
b[3].append(1)
print a, b
哪个给出:
[[],[],[],[1]] [[1],[1],[1],[1]]
为什么这两个会有什么不同?我从来没有遇到过这样的例子,其中这两个方法有不同的输出。。。
感谢
a[3] = a[3] + [1]
未修改a[3]
。相反,它在那里放了一个新项目。a[3] + [1]
创建了一个与a[3]
类似的列表,只是在末尾有一个额外的列表。然后,a[3] = ...
将索引3
处的a
设置到该新列表。
CCD_ 8访问CCD_ 9并使用其CCD_。.append()
方法处理列表本身,并在列表的末尾放置一个。由于[[]] * 4
创建了一个具有另一个列表的四个副本的列表,因此.append()
方法在b
的所有项目中显示其变化。