我正在尝试列出5个列表。
我是通过web = [[]]*5
现在我想更新“列表列表”中的第一个列表,其值为1和2。
web[0].append(1)
web[0].append(2)
但我的输出是
[[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2]]
但是不应该只更新第一个列表吗? 我想要的输出如下
[[1, 2],
[],
[],
[],
[],
[],
[],
[],
[],
[]]
答案 0 :(得分:4)
创建web = [[]]*5
时,实际上是在创建对同一对象([] s列表)的引用数组。因此,当您通过一个引用更改对象时,这将更改列表中的所有条目。
这是一个非常常见的Python'陷阱'适合初学者。
试试这个:
web = [[] for x in xrange(5)]
答案 1 :(得分:-3)
以这种方式创建列表,仅创建重复项。您可以创建这种方式:
n = 5 #range
web = [[] for _ in range(n)]
web[0].append(1)
web[0].append(2)
print(web)
输出继电器:
[
[1, 2],
[],
[],
[],
[]
]