为什么列表推导式会更快

你一定听过这样一个说法,尽量使用列表推导式,而不是用list.append方法来初始化一个列表,那么究竟为何列表推导式会更快呢?

这是因为,列表推导式被编译后的字节码执行速度更快。python当然不是一门编译型语言,但是它还是要被解析成二进制的字节码才能被执行,执行它的正是python解释器。

2、dis

这个模块原生的代码分析模块,通过它,我们可以查看python代码被编译后的字节码

3、示例

执行上面这段代码,输出内容为

这就是两个函数各自的字节码,这些命令的解释,可以在官方文档中查看 ,地址:https://docs.python.org/2/library/dis.html

对比一下,不难发现,两个段字节码最大的区别在于添加元素的部分

func1 中,先要LOAD_ATTR,将append方法加载进来,然后CALL_FUNCTION,也就是执行

而在func2中,则直接调用了LIST_APPEND命令来添加元素,就是这一个小小的区别,使得列表推导式的速度会更快,因为func1相比于func2多了一个LOAD_ATTR的过程,要明白,这条命令在每次循环中都会被执行,一旦循环的次数多起来,就必然拖慢速度

原文地址:http://www.zhangdongshengtech.com/article-detials/211

学习Python就关注:datanami

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181210B0IDE200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券