Python – 创建具有初始容量的列表

问题:

这样的代码经常发生:

l = []
while foo:
    #baz
    l.append(bar)
    #qux

如果您要将数千个元素添加到列表中,这很慢,因为列表将不断调整大小以适应新元素。
在Java中,您可以创建一个具有初始容量的ArrayList。如果您有一些想法,您的列表将会有多大,这将会更有效率。
我知道这样的代码通常可以重新考虑到列表的理解。如果for / while循环非常复杂,那么这是不可行的。我们Python程序员有什么相当的吗?

回答:

def doAppend( size=10000 ):
    result = []
    for i in range(size):
        message= "some unique object %d" % ( i, )
        result.append(message)
    return result

def doAllocate( size=10000 ):
    result=size*[None]
    for i in range(size):
        message= "some unique object %d" % ( i, )
        result[i]= message
    return result

 结果。 (评估每个功能144次,平均持续时间)

simple append 0.0102
pre-allocate  0.0098

 结论。几乎没关系
过早的优化是所有邪恶的根源。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python – Create a list with initial capacity

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

32 − = 30