两个生成的列表之间的差异,python

时间:2013-10-06 09:30:27

标签: python list

创建列表时遇到此问题。有人可以解释为什么两个列表之间存在差异吗?

bucket = [ ]

for n in range(5):
    bucket.append([])

lists = [ [ ] ]*(5)
for n in range(5):
    bucket[n].append(n)
    lists[n].append(n)

print bucket
# [[0], [1], [2], [3], [4]]

print lists
# [[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 :(得分:3)

lists = [ [ ] ] * (5)

创建一个5元素列表,其中每个元素对同一个空列表的引用。因此,一旦你向它们中的“一个”添加任何内容 - 你就可以添加到所有内容中。

同时在循环中附加[](与bucket变量一样),每次都会附加新列表,因此您可以单独添加它们