像这样的代码经常发生:
l = []
while foo:
#baz
l.append(bar)
#qux
Run Code Online (Sandbox Code Playgroud)
如果您要将数千个元素追加到列表中,这非常慢,因为必须不断调整列表大小以适应新元素.
在Java中,您可以创建具有初始容量的ArrayList.如果您对列表的大小有所了解,那么效率会更高.
我知道像这样的代码通常可以重新考虑到列表理解中.但是,如果for/while循环非常复杂,那么这是不可行的.我们的Python程序员有没有相同的东西?
在使用Python编程时,是否可以为将填充已知数量的项目的列表保留内存,以便在构建列表时不会多次重新分配列表?我查看了文档中的Python列表类型,但没有找到任何似乎这样做的东西.但是,这种类型的列表构建显示在我的代码的几个热点中,所以我想尽可能高效.
编辑:另外,用像Python这样的语言做这样的事情是否有意义?我是一个相当有经验的程序员,但是对Python很陌生并且仍然对它的做事方式有所了解.Python是否在内部将所有对象分配到单独的堆空间中,从而无法尝试最小化分配,或者是直接存储在列表中的诸如整数,浮点数等原语?