找回密码
 会员注册
查看: 31|回复: 0

Python列表推导式(Python列表推导式语法列表推导式基础用法列表推导式设置条件表达式用法列表推导式嵌套用法嵌套用法的等价代码分析)

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-6 21:22:43 | 显示全部楼层 |阅读模式
文章目录一、列表推导式1、列表推导式语法2、示例分析-基础用法3、示例分析-条件表达式用法4、示例分析-列表推导式嵌套用法5、示例分析-列表推导式嵌套用法等价代码一、列表推导式1、列表推导式语法Python中的列表推导式ListComprehension用于从一个现有的列表创建一个新列表,使用一行代码即可实现循环或条件逻辑,生成新的列表;列表推导式语法如下:new_list=[expressionforiteminiterableifcondition]1iterable参数:一个现有的列表,可以迭代的对象,比如列表、元组、字符串等;condition参数:可选条件表达式,用于过滤iterable中的元素,iterable列表中只有满足该条件的元素,才会被作为item参与expression表达式计算;item参数:如果没有condition参数,那么item就是iterable列表中的每一个元素;如果有condition参数,那么item就是iterable列表中符合condition条件的元素;expression参数:item参与计算的表达式,其中有item变量;上述语法的等价代码:new_list=[expressionforiteminiterableifcondition]1等价于:new_list=[]foriteminiterable ifcondition new_list.append(expression)12342、示例分析-基础用法下面的示例中,给出的原始列表original_list=[1,2,3,4,5],并且使用列表表达式new_list=[x*2+1forxinoriginal_list]推导出了新的列表;上述列表表达式没有给出条件表达式,也就是说original_list原始列表中所有的元素都参与运算,x就是原始列表中的元素;原始列表中的所有的元素x,都参与x*2+1表达式计算,计算出的结果就是新列表中的元素;代码示例:#列表推导式#原始列表original_list=[1,2,3,4,5]#使用列表推导式推导出新列表new_list=[x*2+1forxinoriginal_list]#打印新列表print(new_list)#输出:[3,5,7,9,11]12345678910执行结果:[3,5,7,9,11]13、示例分析-条件表达式用法本示例中的列表推导式new_list=[x*2+1forxinoriginal_listifx>3]1比基础版列表推导式,new_list=[x*2+1forxinoriginal_list]1增加了条件表达式x>3,凡是original_list列表中的大于3的元素,才能参与x*2+1表达式运算;代码示例:#列表推导式#原始列表original_list=[1,2,3,4,5]#使用列表推导式推导出新列表new_list=[x*2+1forxinoriginal_listifx>3]#打印新列表print(new_list)#输出:[9,11]12345678910执行结果:[9,11]14、示例分析-列表推导式嵌套用法在列表推导式new_list=[(x,y)forxinoriginal_list1foryinoriginal_list2]1中,forxinoriginal_list1是外层的循环,foryinoriginal_list2是内层的循环,外层循环的元素是original_list1=['a','b'],内层循环的元素是original_list2=[1,2],因此最后输出的结果是[('a',1),('a',2),('b',1),('b',2)];如果将内外层循环改变顺序,将foryinoriginal_list2设置成外层循环,将forxinoriginal_list1设置成内层循环,则得到的输出结果是[(1,'a'),(1,'b'),(2,'a'),(2,'b')];代码示例:#列表推导式#原始列表original_list1=['a','b']original_list2=[1,2]#使用列表推导式推导出新列表#forxinoriginal_list1是外层循环#foryinoriginal_list2是内层循环new_list=[(x,y)forxinoriginal_list1foryinoriginal_list2]#打印新列表print(new_list)#输出:[('a',1),('a',2),('b',1),('b',2)]1234567891011121314执行结果:[('a',1),('a',2),('b',1),('b',2)]15、示例分析-列表推导式嵌套用法等价代码在列表推导式new_list=[(x,y)forxinoriginal_list1foryinoriginal_list2]1中,forxinoriginal_list1是外层的循环,foryinoriginal_list2是内层的循环,(x,y)是内存循环的循环体中,向new_list列表中append添加的元素,循环体内容是new_list.append((x,y));最终将列表推导式转为普通的循环代码,等价代码如下:new_list=[]forxinoriginal_list1:foryinoriginal_list2:new_list.append((x,y))12345代码示例:#列表推导式#原始列表original_list1=['a','b']original_list2=[1,2]#使用列表推导式推导出新列表#forxinoriginal_list1是外层循环#foryinoriginal_list2是内层循环#new_list=[(x,y)forxinoriginal_list1foryinoriginal_list2]#等同于上述列表推导式的代码:new_list=[]forxinoriginal_list1:foryinoriginal_list2:new_list.append((x,y))#打印新列表print(new_list)#输出:[('a',1),('a',2),('b',1),('b',2)]12345678910111213141516171819202122执行结果:[('a',1),('a',2),('b',1),('b',2)]1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 18:47 , Processed in 0.432682 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表