我有点困惑这是如何工作的。
x = []
y = []
for i in range(5):
y.append(i) # Why does this create full copies of sub lists?
x.append(y)
#x.extend(y) # This works normal
print x
为什么x.append(y)
警告最终结果如下?你能解释一下是否有一些背景参考值?
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
答案 0 :(得分:4)
y
指向的对象只有一个。它以空列表开头。每次循环,你都会使单个对象更长。列表x
与[y, y, y, y, y]
基本相同,后者为您提供了所描述的结果。
当您使用x.extend(y)
时,y
的当前元素将被复制到列表x
的末尾。这是一个完全不同的操作。