专栏名称: Python开发者
人生苦短,我用 Python。伯乐在线旗下账号「Python开发者」分享 Python 相关的技术文章、工具资源、精选课程、热点资讯等。
目录
相关文章推荐
Python爱好者社区  ·  很严重了,大家别轻易离职 ·  19 小时前  
百职帮  ·  高考结束别躺平!这个暑假学Python,开学 ... ·  14 小时前  
百职帮  ·  高考结束别躺平!这个暑假学Python,开学 ... ·  14 小时前  
Python开发者  ·  苹果炮轰推理模型全是假思考!4个游戏戳破神话 ... ·  17 小时前  
Python爱好者社区  ·  月薪3万35岁脑干出血程序员:ICU躺了28 ... ·  2 天前  
Python爱好者社区  ·  务必立即拿下软考证(政策红利) ·  3 天前  
51好读  ›  专栏  ›  Python开发者

深入 Python 列表的内部实现

Python开发者  · 公众号  · Python  · 2017-05-23 19:53

正文

请到「今天看啥」查看全文


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


要分清列表大小和分配的槽大小,这很重要。列表的大小和 len(l) 的大小相同。分配槽的大小是指已经在内存中分配了的槽空间数。通常分配的槽的大小要大于列表大小,这是为了避免每次列表添加元素的时候都调用分配内存的函数。下面会具体介绍。


Append 操作


向列表添加一个整数: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







请到「今天看啥」查看全文