2014-10-22 76 views
1

我有點困惑這是如何工作的。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]] 

回答

3

y只有一個對象指向。它從一個空的列表開始。每次循環時,都會讓單個對象變長。列表x[y, y, y, y, y]基本相同,它給出了你描述的結果。

當您使用x.extend(y),那麼y當前元素被複制到列表x結束。這是完全不同的操作。