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

发布于 2021-01-29 17:06:35

像这样的代码经常发生:

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

如果您要将数千个元素添加到列表中,这确实很慢,因为必须不断调整列表的大小以适应新元素。

在Java中,您可以创建具有初始容量的ArrayList。如果您知道列表的大小,这将大大提高效率。

我知道这样的代码通常可以重构为列表理解。但是,如果for / while循环非常复杂,则这是不可行的。我们的Python程序员有什么对等的地方吗?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    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
    

    结论 。没关系。

    过早的优化是万恶之源。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看