将项添加到python中的列表列表时出现意外的输出

时间:2013-04-20 19:36:24

标签: python list

这是相当直接的代码,它没有做我想做的事情。怎么了?

In [63]: c = [[]]*10

In [64]: c
Out[64]: [[], [], [], [], [], [], [], [], [], []]

In [65]: c[0]
Out[65]: []

In [66]: c[0] += [1]

In [67]: c
Out[67]: [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]

预期输出为[[1], [], [], [], [], [], [], [], [], []]

1 个答案:

答案 0 :(得分:9)

这是一个经典的Python陷阱。

c = [[]]*10

创建一个包含10个项目的列表。 中相同的完整列表中的10个项目。因此修改一个项目会修改它们。

要创建10个独立列表,请使用

c = [[] for i in range(10)]