推荐教材:

董付国编著.Python程序设计(第4版·微课版·在线学习软件版),ISBN:9787302663799,清华大学出版社,2024年6月出版,2024年7月第2次印刷(本书前3版印刷34次),定价69.8元,山东省普通高等教育一流教材,国家级特色专业、国家级一流本科专业“计算机科学与技术”配套教材,山东省一流本科课程“Python应用开发”配套教材,2019、2020、2021、2022年清华大学出版社畅销教材,2022、2023年清华大学出版社科技类最受高校欢迎奖

进行了内部优化的Python列表推导式反而不如for循环效率高?_python

进行了内部优化的Python列表推导式反而不如for循环效率高?_python_02

进行了内部优化的Python列表推导式反而不如for循环效率高?_发送消息_03

图书内容:154个例题、140节微课视频(含课程思政),内容涉及Python基础、Office文件操作、GUI、图像处理、计算机图形学、音视频处理、数据分析与科学计算可视化、密码学、数据库、网络编程、多线程与多进程、逆向工程、Windows系统编程与安卓编程等领域。

页数:372

适用专业:计算机类所有专业

适用层次:研究生/本科/专科

配套资源:教学大纲、电子教案、课件、源码、数据文件、习题答案、题库,在线练习软件,支持课程思政,支持工程教育认证

适用学时:64/96/128

《Python程序设计(第4版)》教学大纲

===============

问题描述:

熟悉Python的朋友都知道,列表推导式在内部进行了优化,比功能等价的循环结构效率略高一点,例如,

进行了内部优化的Python列表推导式反而不如for循环效率高?_python_04

但是必须要注意,上面那句话的成立是有条件的,结果相同并不意味着功能完全等价,更不意味着执行过程完全等价。在给出这个条件之前,我们先来看下面的列表推导式。可以明确的一点是,这三个列表推导式的结果是一样的。

进行了内部优化的Python列表推导式反而不如for循环效率高?_循环结构_05

我们来测试一下运行时间可以发现,虽然最终得到的列表是一样的,但随着range()函数的参数越来越大,计算列表推导式所需要的时间差不多是按比例增加的。

进行了内部优化的Python列表推导式反而不如for循环效率高?_python_06

把上面的列表推导式改写为功能等价(结果相同)的循环结构,

进行了内部优化的Python列表推导式反而不如for循环效率高?_发送消息_07

再来测试一下循环结构执行速度随range()函数参数变化的情况,可以发现几乎与参数无关。

进行了内部优化的Python列表推导式反而不如for循环效率高?_Python_08

最后,让我们回到文章开头的问题,为什么结果相同的列表推导式计算时间受range()函数参数影响,而循环结构不受影响呢?问题的关键在于循环结构当条件不满足时可以立即结束,而列表推导式遇到不满足条件的元素是跳过该元素继续检查下一个,最终会遍历完range对象的所有元素。

================

温馨提示:

关注微信公众号“Python小屋”