Python列表内存重新分配问题

如果我使用的是C-Python或jython(在python 2.7中),并且对于列表([])数据结构,如果我继续添加新元素,是否会出现像Java ArrayList那样的内存重新分配问题(因为Java ArrayList需要连续内存空间,如果当前的预分配空间已满...

如果我使用的是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

问候,

解决方法:

至少对于主Python而言,基本故事是列表包含指向内存中其他位置的对象的指针.该列表是用一定的可用空间创建的(例如,用于8个指针).填满后,它将分配更多的内存,依此类推.它是否将指针从一个内存块移动到另一个内存块,是大多数用户忽略的细节.实际上,我们只是根据需要追加/扩展列表,而不必担心内存的使用.

Why does creating a list from a list make it larger?

我假设jython使用相同的方法,但是您必须深入研究其代码才能看到它如何转换为Java.

我主要回答麻木的问题.这是一个数字包,可创建固定大小的多维数组.如果用户需要逐步构建这样的数组,我们通常建议他们从列表开始并附加值.最后,他们创建数组.追加到列表要比多次重建数组便宜得多.

本文标题为:Python列表内存重新分配问题

基础教程推荐