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

Python小技巧通过实例说明推导式,条件表达式和Lambda函数

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-7 17:00:21 | 显示全部楼层 |阅读模式
文章目录1.推导式1.1列表推导式1.2集合推导式1.3字典推导式2.4生成器推导式2.条件表达式3.Lambda函数按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。本文总结在Python编程中会使用到的三个(高阶)小技巧:推导式,条件表达式和Lambda函数,并通过实例说明其使用方法。这三者都是用来简化代码的工具,但可能会影响代码的可读性,在实际编码中要综合考虑是否采用这三种方法。1.推导式Python中的推导式是一种简洁且强大的语法结构,用于从一个或多个可迭代对象高效地创建新的列表、集合、字典或生成器对象。以下是四种主要类型的推导式:1.1列表推导式列表推导式用于快速生成列表,它可以包含一个或多个循环以及条件表达式。基本语法:new_list=[expressionforiteminiterableifcondition]1例如:squares=[x**2forxinrange(10)]#创建一个包含前10个整数平方的列表even_squares=[x**2forxinrange(10)ifx%2==0]#创建只包含偶数平方的列表12'运行运行print输出为:[0,1,4,9,16,25,36,49,64,81][0,4,16,36,64]12'运行运行1.2集合推导式集合推导式用于创建无重复元素的集合,语法类似于列表推导式。基本语法:new_set={expressionforiteminiterableifcondition}1例如:unique_even_numbers={xforxin[1,2,2,3,4,4,4,5,6]ifx%2==0}#创建一个仅包含唯一偶数的集合1'运行运行print输出为:{2,4,6}1'运行运行注意:与上面列表推导式不同,集合推导式会自动滤去重复元素,以下面代码为例:a={xforxin[1,2,2,3,3,4,5,5]}1'运行运行print输出为:{1,2,3,4,5}1'运行运行1.3字典推导式字典推导式用于创建字典,其中键值对是通过某种表达式和迭代过程生成的。基本语法:new_dict={key_expression:value_expressionforiteminiterableifcondition}1例如:dict_even_square={i:i**2foriinrange(10)ifi%2==0}1'运行运行print输出为:{0:0,2:4,4:16,6:36,8:64}1'运行运行2.4生成器推导式生成器推导式看起来与列表推导式相似,但它不直接创建列表,而是生成一个生成器对象,可以逐个产生所需的结果,节省内存。基本语法:generator=(expressionforiteminiterableifcondition)1例如:gen_squares=(x**2forxinrange(5))#创建一个生成器,按需生成前5个整数的平方print(type(gen_squares))foriingen_squares:print(i)1234'运行运行输出为:014916123456在以上各个推导式中,expression是针对item计算的新值,iterable是用于迭代的数据源,ifcondition是可选的筛选条件。通过这些结构,Python程序员可以方便地对数据进行转换、筛选和聚合,提升代码的简洁性和执行效率。2.条件表达式Python中的条件表达式,也称为三元运算符,它允许在一行内根据某个条件来决定返回哪个值。条件表达式的语法结构如下:value_if_trueifconditionelsevalue_if_false1这里的condition是一个布尔表达式,如果condition的结果为True,那么整个条件表达式的值就是value_if_true;反之,如果condition为False,则整个表达式的值就是value_if_false。举例来说:age=18status="成年"ifage>=18else"未成年"12'运行运行print输出为:成年1在这个例子中,如果age大于等于18,则status变量会被赋值为字符串“成年”,否则会被赋值为“未成年”。而条件表达式也可以实现多个条件的判断,例如下例:age=61status="未成年"ifage
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 05:53 , Processed in 0.851224 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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