Python中长度为n的空列表序列?

时间:2014-05-12 14:51:56

标签: python list sequence

在python []*2中,提供[]

获取[[],[]]的最简单方法是什么?

3 个答案:

答案 0 :(得分:6)

你可能想要:

[[] for _ in range(n)]

[[]] * n不同,这会为您提供唯一内部列表(附加到一个不会附加到所有 >)。 e.g:

>>> x = [[] for _ in range(n)]
>>> x[0].append(1) 
>>> x
[[1], [], []]

与之相比:

>>> x = [[]] * 3
>>> x[0].append(1)
>>> x
[[1], [1], [1]]

请注意,后一个成语([[]] * n)是一个非常常见的错误,它常常在不同的环境中出现在这里。

答案 1 :(得分:4)

使用理解:

[[] for _ in range(2)]

答案 2 :(得分:-2)

那是因为(例如)[1]*3给出[1,1,1],即包含列表内容的序列。

因此,您希望复制值[]

a = [[]]*2

[[], []]

由于*运算符的工作方式,这会提供相同列表的副本。因此,如果您尝试修改其中任何一个内部空列表,它会影响它们。 (因为它们是空的,你可以做的唯一事情就是追加它们;即a[0].append(1)[[1],[1]]。)这可能,但不太可能,你想要的。