Python:列表输出列表

时间:2017-02-28 06:17:49

标签: python list

我正在尝试列出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],
[],
[],
[],
[],
[],
[],
[],
[],
[]]

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