Python参考附加列表

时间:2014-10-22 02:11:32

标签: python

我有点困惑这是如何工作的。

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]]

1 个答案:

答案 0 :(得分:4)

y指向的对象只有一个。它以空列表开头。每次循环,你都会使单个对象更长。列表x[y, y, y, y, y]基本相同,后者为您提供了所描述的结果。

当您使用x.extend(y)时,y当前元素将被复制到列表x的末尾。这是一个完全不同的操作。