所以我想知道如何最好地创建空白列表列表:
[[],[],[]...]
由于 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(n)]
is
from itertools import repeat
d = [[] for i in repeat(None, n)]
它不必创建一个新的int
object 在每次迭代中,并且在我的机器上大约快了 15%。
Edit:使用 NumPy,您可以使用以下方法避免 Python 循环
d = numpy.empty((n, 0)).tolist()
但这实际上比列表理解慢 2.5 倍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)