【发布时间】:2023-03-07 14:33:01
【问题描述】:
所以我想知道如何最好地创建一个空白列表:
[[],[],[]...]
由于 Python 如何处理内存中的列表,这不起作用:
[[]]*n
这确实创建了[[],[],...],但每个元素都是同一个列表:
d = [[]]*n
d[0].append(1)
#[[1],[1],...]
类似于列表推导的工作:
d = [[] for x in xrange(0,n)]
但这使用 Python VM 进行循环。有没有办法使用隐含循环(利用它是用 C 编写的)?
d = []
map(lambda n: d.append([]),xrange(0,10))
这实际上更慢。 :(
【问题讨论】:
-
如果有什么比
d = [[] for x in xrange(0,n)]快得多,我会感到惊讶。您要么必须在 Python 中显式循环,要么重复调用 Python 函数/lambda(这应该更慢)。但仍然希望有人会发布一些表明我错了的东西:)。 -
当你用
timeit测量这些时,你学到了什么? -
我刚刚确认
map(lambda x: [], xrange(n))比列表理解要慢。
标签: python