如果我使用C-Python或jython(在Python 2.7中),对于列表([])数据结构,如果我不断添加新元素,是否会出现内存重新分配问题,就像Java ArrayList一样(因为Java ArrayList需要连续的内存空间,如果当前预先分配的空间已满,则需要重新分配新的更大的连续大内存空间,并将现有元素移动到新分配的空间中)?
链接:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.ensureCapacity%28int%29 问候, 林
链接:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.ensureCapacity%28int%29 问候, 林
ob_item
。当列表增长时,ob_item
可能会被重新分配,旧的项被复制,但这是在C级别进行的,所以速度很快。当然,Python列表对象本身的内存位置并不会受到影响。 - PM 2RingO(n)
时间(其中n
是列表中元素的数量)? - Lin Mafor
循环快得多。请记住,现代 CPU 对于复制数组具有高效的操作码。 - PM 2Ring