0

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

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

1 回答 1

3
lists = [ [ ] ] * (5)

创建一个 5 元素列表,其中每个元素都是对相同的空列表的引用。因此,一旦您将任何内容添加到其中的“一个”中,您就会添加到所有内容中。

同时在循环中附加[](如使用bucket变量)每次都附加新列表,因此您可以独立添加到它们

于 2013-10-06T09:34:13.590 回答