目录
- 一.Python 列表推导式简介
- 二.Python 列表推导式语法
- 三.Python 列表推导式练习
- 1.Python 列表推导式案例一
- 2.Python 列表推导式案例二
- 3.Python 列表推导式和循环效率对比
- 四.重点总结
- 五.猜你喜欢
一.Python 列表推导式简介上一篇文章中我们介绍了 Python 条件推导式 , 实际上就是把多行代码合并为一行代码的操作 , 使用列表推导式可以让程序的运行效率更高(文章末尾有具体讲解) , 其实列表推导式其实和条件推导式类似;
Python 列表推导式是从一个或者多个迭代器快速简洁地创建数据类型的一种方法 , 它将循环和条件判断结合 , 从而避免语法冗长的代码 , 提高代码运行效率 。能熟练使用推导式也可以间接说明你已经超越了 Python 初学者的水平** 。**

文章插图
Python 推导式相关:
- 条件推导式
- 列表推导式
- 字典推导式
'''语法一:exp1:在for循环中 , 如果x的值满足条件表达式condition(即条件表达式成立) , 返回exp1;条件表达式不成立则不返回x:for循环中变量data:一个序列(比如:列表/元组/字符串等)condition:条件表达式'''[exp1 for x in data if condition]'''语法二:exp1:在for循环中 , 如果x的值满足条件表达式condition(即条件表达式成立) , 返回exp1;条件表达式不成立则返回exp2condition:条件表达式exp2:在for循环中 , 如果x的值满足条件表达式condition(即条件表达式成立) , 返回exp1;条件表达式不成立则返回exp2x:for循环中变量data:个序列(比如:列表/元组/字符串等)'''[exp1 if condition else exp2 for x in data]三.Python 列表推导式练习1.Python 列表推导式案例一获取 0 ~ 20 的所有偶数并且乘以 10 , 并返回所有计算之后的结果 。示例代码如下:(使用 Python 列表推导式语法一实现)# !usr/bin/env python# -*- coding:utf-8 _*-"""@Author:猿说编程@Blog(个人博客地址): www.codersrc.com@File:Python Python 列表推导式.py@Time:2021/3/27 08:00@Motto:不积跬步无以至千里 , 不积小流无以成江海 , 程序人生的精彩需要坚持不懈地积累!"""'''1.因为是获取0~20 , 包括20 , 所以使用range(0,21)2.x*10 等价 语法一中的exp13.x%2 == 0 等价 语法一中的条件表达式condition4.range(0,21) 等价 语法一中的data(序列)'''list1 = [x*10 for x in range(0,21) if x%2 == 0]print(list1)print(type(list1))'''输出结果:[0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200]<class 'list'>'''2.Python 列表推导式案例二将 0 ~ 20 的偶数乘以 10 , 奇数乘以 100 , 并返回所有计算之后的结果 。示例代码如下:(使用 Python 列表推导式语法二实现)# !usr/bin/env python# -*- coding:utf-8 _*-"""@Author:猿说编程@Blog(个人博客地址): www.codersrc.com@File:Python Python 列表推导式.py@Time:2021/3/27 08:00@Motto:不积跬步无以至千里 , 不积小流无以成江海 , 程序人生的精彩需要坚持不懈地积累!"""'''1.因为是获取0~20 , 包括20 , 所以使用range(0,21)2.x*10 等价 语法二中的exp13.x*100 等价 语法二中的exp24.x%2 == 0 等价 语法二中的条件表达式condition5.range(0,21) 等价 语法一中的data(序列)'''list2 = [x*10 if x%2 == 0 else x*100 for x in range(0,21) ]print(list2)print(type(list2))'''输出结果:[0, 100, 20, 300, 40, 500, 60, 700, 80, 900, 100, 1100, 120, 1300, 140, 1500, 160, 1700, 180, 1900, 200]<class 'list'>'''3.Python 列表推导式和循环效率对比可能有童鞋纳闷 , 我明明 for 循环 或者 while 循环就能实现的功能 , 为毛要用这鸟玩意推导式?使用列表推导式的效率远远高于 for 循环 , 可能执行一句 print(“helloworld”) 对于 cpu 而已只需要 0.0002 秒 , 你可能感觉不到差距 , 如果需要输出一亿次 helloworld 呢?往往细节觉得成败!
假如有一个需求:将 0 ~ 10000000 (一亿)以内的所有整数存到列表中 , 对比一下 Python 列表推导式 和 for 循环耗时情况:
# !usr/bin/env python# -*- coding:utf-8 _*-"""@Author:猿说编程@Blog(个人博客地址): www.codersrc.com@File:Python Python 列表推导式.py@Time:2021/3/27 08:00@Motto:不积跬步无以至千里 , 不积小流无以成江海 , 程序人生的精彩需要坚持不懈地积累!"""import time # 添加time模块 , 用于统计代码运行时间#一共添加10000000次数据到列表中total_num = 10000000#使用列表推导式start_time = time.time()list1 = [x for x in range(0,total_num)] # 列表推导式end_time = time.time()print("使用列表推导式耗时:{}秒".format(end_time-start_time))#使用普通for循环start_time = time.time()list2 = list()for x in range(0,total_num): # for循环list2.append(x)end_time = time.time()print("使用普通for循环耗时:{}秒".format(end_time-start_time))'''输出结果:使用列表推导式耗时:0.5455152988433838秒使用普通for循环耗时:1.2068836688995361秒'''输出结果很明显 , 实现通用的功能 , Python 列表推导式的效率整整高出普通 for 循环一倍 。
文章插图
【Python 列表推导式】最后温馨提醒:测试请把循环次数改小一点 , 毕竟刚开始不小心多加了几圈圈 , 电脑死机了!
四.重点总结
- 1.注意在 Python 列表推导式书写的时候 , 所有表达式都必须在 [] 内部 , 因为返回值是列表 list
- 2.列表推导式是 Python 开发学习的知识点 , 多多联系 , 熟能生巧.
- Python 配置环境
- Python 变量
- Python 运算符
- Python 条件判断 if/else
- Python while 循环
- Python break
- Python continue
- Python for 循环
- Python 字符串
- Python 列表 list
- Python 元组 tuple
- Python 字典 dict
- Python 条件推导式
- Python 列表推导式
- Python 字典推导式
本文由博客 - 猿说编程 猿说编程 发布!
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
