我想知道如何创建一列空列表:
[[],[],[]...]
因为Python在内存中处理列表的方式,所以这段代码无法运行:
[[]]*n
这确实创建了[[],[],...]
,但每个元素都是相同的列表:
d = [[]]*n
d[0].append(1)
#[[1],[1],...]
可以使用类似列表推导式的语法:
d = [[] for x in xrange(0,n)]
但是这个方法使用了Python虚拟机进行循环。有没有一种方式可以使用隐式循环(利用它是用C语言编写的)?
d = []
map(lambda n: d.append([]),xrange(0,10))
这实际上更慢. :(
d = [[] for x in xrange(0,n)]
更快的东西,我会感到惊讶。你要么必须在 Python 中显式循环,要么重复调用 Python 函数/lambda(这应该会更慢)。但仍然希望有人能发帖证明我是错的 :). - MAKtimeit
进行测量时,您学到了什么? - S.Lottmap(lambda x: [], xrange(n))
比列表推导式慢。 - Andrew Clark