这是相当直接的代码,它没有做我想做的事情。怎么了?
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], [], [], [], [], [], [], [], [], []]
。
答案 0 :(得分:9)
这是一个经典的Python陷阱。
c = [[]]*10
创建一个包含10个项目的列表。 中相同的完整列表中的10个项目。因此修改一个项目会修改它们。
要创建10个独立列表,请使用
c = [[] for i in range(10)]