Python-列表推导式-for-if的简洁写法以及应用

Python-列表推导式

列表推导式也称列表解析式,可以使用非常简洁的方式对列表或其他可迭代对象的元素进行遍历,再次计算,快速生成满足特定需求的新列表,代码非常简洁,具有很强的可读性,是Python程序开发时应用最多的技术之一。

Python的内部实现对列表推导式做了大量的优化,可以保证很快的运行速度,也是推荐使用的一种技术。

列表推导式的语法形式为:
[expression for expr1 in sequence1 if condition1
for expr2 in sequence2 if condition2
for expr3 in sequence3 if condition3


for exprN in sequenceN if conditionN]
列表推导式在逻辑上等价于一个循环语句,只是形式上更加简洁。
在这里插入图片描述等价于:
在这里插入图片描述

接下来再通过几个示例来进一步展示列表推导式的强大功能。
1.实现嵌套列表的平铺
在这里插入图片描述在这个列表推导式中有两个循环,其中第一个循环可以看作外循环,执行得慢;第二个循环可以看作内循环,执行得快。上面代码的执行过程等价于下面的写法:
在这里插入图片描述2.过滤不符合条件的元素
在列表推导式中可以使用if子句对列表中的元素进行筛选,只在结果列表中保留符合条件的元素。

示例:
下面的代码用于从列表中选择符合条件的元素组成新的列表。
1.筛选出列表中大于0的数字。
在这里插入图片描述再比如:已知有一个包含一些同学成绩的字典,现在需要计算所有成绩的最高分、最低分、平均分,并查找所有最高分的同学,代码可以这样编写:
在这里插入图片描述在这里插入图片描述2.使用列表推导式查找列表中最大元素的所有位置。
在这里插入图片描述在这里插入图片描述3.同时遍历多个列表或可迭代对象

在这里插入图片描述
对于包含多个循环的列表推导式,一定要清楚多个循环的执行顺序或“嵌套关系”。例如,上面的列表推导式等价于:
在这里插入图片描述在这里插入图片描述等价于

在这里插入图片描述

4.使用列表推导式实现矩阵转置

在这里插入图片描述
对于嵌套了列表推导式的列表推导式,一定要清楚其执行顺序。例如,上面的列表推导式的执行过程等价于下面的代码。

在这里插入图片描述

如果把内层的列表推导式也展开,完整的执行过程可以通过下面的代码来模拟:

在这里插入图片描述
当然,也可以使用内置函数zip()和list()来实现矩阵转置:
更简单。
在这里插入图片描述
5.列表推导式中可以使用函数或复杂表达式

在这里插入图片描述

7.使用列表推导式生成100以内的所有素数
在这里插入图片描述

在这里插入图片描述

参考来源:Python程序设计基础(第2版)董付国 编著

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值