栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python list()与列表理解构建速度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python list()与列表理解构建速度

列表推导以Python字节码执行循环,就像常规

for
循环一样。

list()
调用完全在C代码中进行迭代,这要快得多。

列表理解的字节码如下所示:

>>> import dis>>> dis.dis(compile("[x for x in xrange(1000000)]", '<stdin>', 'exec'))  10 BUILD_LIST    0   3 LOAD_NAME     0 (xrange)   6 LOAD_ConST    0 (1000000)   9 CALL_FUNCTION 1  12 GET_ITER         >>   13 FOR_ITER     12 (to 28)  16 STORE_NAME    1 (x)  19 LOAD_NAME     1 (x)  22 LIST_APPEND   2  25 JUMP_ABSOLUTE13        >>   28 POP_TOP    29 LOAD_ConST    1 (None)  32 RETURN_VALUE

>>
指针大致给你执行循环的界限,让你有百万
STORE_NAME
LOAD_NAME
LIST_APPEND
步骤在Python字节码估价循环执行。

list()
另一方面,仅
xrange()
使用C
API进行对象迭代即可直接从Iterable中获取值,并且它可以使用
xrange()
对象的长度来预分配列表对象,而不是动态地对其进行增长。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号