【发布时间】:2014-05-12 14:51:55
【问题描述】:
在 python 中[]*2,给出[]
获取[[],[]] 的最简单方法是什么?
【问题讨论】:
-
cheers mods, touche` ,但问题是被骗者的标题不够精确,无法有效搜索 - 我会编辑他们的
在 python 中[]*2,给出[]
获取[[],[]] 的最简单方法是什么?
【问题讨论】:
你可能想要:
[[] for _ in range(n)]
与[[]] * n 不同,这将为您提供唯一 内部列表(附加到一个 不会附加到它们全部)。例如:
>>> x = [[] for _ in range(n)]
>>> x[0].append(1)
>>> x
[[1], [], []]
相比:
>>> x = [[]] * 3
>>> x[0].append(1)
>>> x
[[1], [1], [1]]
请注意,后一个习语 ([[]] * n) 是一个非常常见的错误,在不同的上下文中经常出现。
【讨论】:
使用理解:
[[] for _ in range(2)]
【讨论】:
这是因为(例如)[1]*3 给出了[1,1,1],即包含列表内容的序列。
因此您想复制值[]:
a = [[]]*2
给予
[[], []]
由于* 运算符的工作方式,这会给出same 列表的副本。因此,如果您尝试修改这些内部空列表中的任何一个,它都会影响它们。 (因为它们是空的,你唯一能做的就是追加它们;即,a[0].append(1) 给出[[1],[1]]。)这可能是你想要的,但不太可能。
【讨论】:
a = [[]]*2; a[0].append(1); print a