如果我使用的是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列表内存重新分配问题


基础教程推荐
- Python和Shell交互工具 ShellPy 2023-11-11
- Python sklearn库三种常用编码格式实例 2022-10-20
- Python爬虫Requests库的使用详情 2022-08-30
- Linux安装python3.6 2023-09-03
- jupyter notebook添加python内核(windows) 2023-09-03
- 详解Python如何生成优雅的二维码 2022-10-20
- Python 文本相似度分析 2023-09-04
- OpenCV-Python图像轮廓之轮廓特征详解 2023-08-08
- Python二叉树用法介绍 2023-10-08
- 人脸检测实战终极之OpenCV+Python实现人脸对齐 2023-08-08