==============
版权声明:由于公众号后台规则问题,本文暂时无法设置原创标记,但仍属原创内容,微信公众号“Python小屋”坚持只发原创技术文章。
=============
董付国编著.Python程序设计(第4版·微课版·在线学习软件版),ISBN:9787302663799,清华大学出版社,2024年6月出版,2024年7月第2次印刷(本书前3版印刷34次),定价69.8元,山东省普通高等教育一流教材,国家级特色专业、国家级一流本科专业“计算机科学与技术”配套教材,山东省一流本科课程“Python应用开发”配套教材,2019、2020、2021、2022年清华大学出版社畅销教材,2022、2023年清华大学出版社科技类最受高校欢迎奖图书内容:154个例题、140节微课视频(含课程思政),内容涉及Python基础、Office文件操作、GUI、图像处理、计算机图形学、音视频处理、数据分析与科学计算可视化、密码学、数据库、网络编程、多线程与多进程、逆向工程、Windows系统编程与安卓编程等领域。配套资源:教学大纲、电子教案、课件、源码、数据文件、习题答案、题库,在线练习软件,支持课程思政,支持工程教育认证熟悉Python的朋友都知道,列表推导式在内部进行了优化,比功能等价的循环结构效率略高一点,例如,但是必须要注意,上面那句话的成立是有条件的,结果相同并不意味着功能完全等价,更不意味着执行过程完全等价。在给出这个条件之前,我们先来看下面的列表推导式。可以明确的一点是,这三个列表推导式的结果是一样的。
我们来测试一下运行时间可以发现,虽然最终得到的列表是一样的,但随着range()函数的参数越来越大,计算列表推导式所需要的时间差不多是按比例增加的。把上面的列表推导式改写为功能等价(结果相同)的循环结构,再来测试一下循环结构执行速度随range()函数参数变化的情况,可以发现几乎与参数无关。最后,让我们回到文章开头的问题,为什么结果相同的列表推导式计算时间受range()函数参数影响,而循环结构不受影响呢?问题的关键在于循环结构当条件不满足时可以立即结束,而列表推导式遇到不满足条件的元素是跳过该元素继续检查下一个,最终会遍历完range对象的所有元素。关注微信公众号“Python小屋”,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(已累计印刷超过210次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1400篇原创技术文章;发送消息“会议”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过700节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习5353道客观题和850道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。