由于可变,当扩展Python列表时(例如,mylist.extend()或mylist = anotherlist),列表的ID不会更改.我知道(至少在CPython中)列表在内存中是连续的(并且ID恰好是列表头的地址).如果列表后的内存已经高度碎片化并且无法分...

由于可变,当扩展Python列表时(例如,mylist.extend()或mylist = anotherlist),列表的ID不会更改.
我知道(至少在CPython中)列表在内存中是连续的(并且ID恰好是列表头的地址).如果列表后的内存已经高度碎片化并且无法分配列表扩展(即使有足够的可用空间,尽管该区域不连续)怎么办?分配失败吗?如何缓解?
解决方法:
在CPython中,这是列表和元组分配方式的差异.对于列表,该对象包含一个指向为列表内容分配的内存的指针.适当的列表对象很小,不需要移动.它指向的向量的地址可以更改任何次数.
对于大多数情况下预期较小的元组对象,确实会在元组对象中直接分配用于元组内容的内存.但是元组无法调整大小,因此在这种情况下不会出现您的情况.
本文标题为:如果列表后没有足够的连续内存,CPython处理列表的方式如何扩展?


基础教程推荐
- Python+OpenCV实战之实现文档扫描 2022-10-20
- centos 重新安装python3.6之后 yum 无法使用报错 2023-09-03
- 使用Python实现给企业微信发送消息功能 2023-08-11
- python匹配linux通配符 2023-09-03
- Python 进程交互 2023-09-03
- 进程与子进程(python3入门) 2023-09-04
- Python爬取几千条相亲文案 2023-08-04
- python-使用张量板回调时Keras不输出任何输出,高内存和CPU使用率并且不使用GPU 2023-11-11
- ipython的安装(linux) 2023-09-03
- windows下python虚拟环境virtualenv安装和使用 2023-09-05