- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python中list的实现 简书
Python中list的实现
(/users/1GdBU6)
acmerfight 2013.03.17 15:39* 1654 字 2210 次阅读
收藏文章 (/sign_in) 分享
原文链接 (/posts/python-list-implementation/)
这篇文章介绍了Python中list是如何实现的。
在Python中list特别有用。让我们来看下list的内部是如何实现的。
来看下面简单的程序 ,在list中添加一些整数并将他们打印出来。
L = []
L.append(1)
L.append(2)
L.append(3)
L
[1, 2, 3]
for e in L:
... print e
...
1
2
3
正如你所看到的 ,list是可以迭代的。
List对象的C结构
Python中list是用下边的C语言的结构来表示的。ob_item 是用来保存元素的指针数组 ,
allocated是 ob_item 预先分配的内存总容量
简 登录 注册
typedef struct {
PyObject_VAR_HEAD
PyObject **ob_item;
Py_ssize_t allocated;
} PyListObject;
List的初始化
让我们来看下当初始化一个空list的时候发生了什么 L []
arguments: size of the list = 0
returns: list object = []
PyListNew:
nbytes = size * size of global Python object = 0
allocate new list object
allocate list of pointers (ob_item) of size nbytes = 0
clear ob_item
set list s allocated var to 0 = 0 slots
return list object
非常重要的是知道list申请内存空间的大小 (后文用allocated代替 )的大小和list实际存储元
素所占空间的大小( ob_size )之间的关系 ,ob_size 的大小和 len(L) 是一样的 ,而allocated的大
小是在内存中已经申请空间大小。通常你会看到allocated的值要比ob_size 的值要大。这是为
了避免每次有新元素加入list时都要调用realloc进行内存分配。接下来我们会看到更多关于
这些的内容。
Append
我们在list中追加一个整数:L.append(1)。发生了什么 ?调用了内部的C函数app1()
arguments: list object, new element
returns: 0 if OK, ‐1 if not
app1:
n = size of list
call list_resize() to resize the list to size n+1 = 0 + 1 = 1
list[n] = list[0] = new element
return 0
来让我们看下 list_resize() , list_resize() 会申请多余的空间以避免调用多次 list_resize() 函
您可能关注的文档
- Microstructure and opencircuit voltage of nip microcrystalline silicon solar cells.pdf
- Microsoft 云合作伙伴计划常见问题解答.pdf
- Microstructure, morphology and lifetime of armored bubbles exposed to surfactants.pdf
- Microstructures and bond strengths of the calcium phosphate coatings formed on.pdf
- Microstructures and optical properties of Cudoped ZnO films prepared by radio.pdf
- MISR和MODIS二向性反射数据产品的对比分析.pdf
- Mobility Modelling using Attraction Points for Cellular Network Environments.pdf
- Modal Analysis of Construction Hoist Based on ANSYS.doc
- miRNA研究专辑.pdf
- Modeling Influenza Viral Dynamics in Tissue.pdf
文档评论(0)