4

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

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

4

1 回答 1

9

这是一个经典的 Python 陷阱。

c = [[]]*10

创建一个包含 10 个项目的列表。10 项中的每一项都在同一个确切列表中。因此,修改一项会修改所有项。

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

c = [[] for i in range(10)]
于 2013-04-20T19:38:31.390 回答