在python []*2
中,提供[]
获取[[],[]]
的最简单方法是什么?
答案 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]]
。)这可能,但不太可能,你想要的。