像这样的代码经常发生:
l = []
while foo:
#baz
l.append(bar)
#qux
Run Code Online (Sandbox Code Playgroud)
如果您要将数千个元素追加到列表中,这非常慢,因为必须不断调整列表大小以适应新元素.
在Java中,您可以创建具有初始容量的ArrayList.如果您对列表的大小有所了解,那么效率会更高.
我知道像这样的代码通常可以重新考虑到列表理解中.但是,如果for/while循环非常复杂,那么这是不可行的.我们的Python程序员有没有相同的东西?
如果我有一个清单:
list_1 = ["apples", "apricots", "oranges"]
Run Code Online (Sandbox Code Playgroud)
我将一个新项目添加到列表中:“浆果”
list_1 = ["apples", "apricots", "oranges", "berries"]
Run Code Online (Sandbox Code Playgroud)
在幕后(可以这么说),我想我记得读过Python创建了另一个列表(list_2)并将其指向原始列表(list_1),以便list_1保持静态......如果这是真的,它看起来会吗?像这样的东西(在引擎盖下)?
list_1 = ["apples", "apricots", ["oranges", "berries"]]
Run Code Online (Sandbox Code Playgroud)
所以这样一来,原来的列表就保持了原来的大小。这是正确的看待方式吗?