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

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

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。


本文总结在Python编程中会使用到的三个(高阶)小技巧:推导式,条件表达式和Lambda函数,并通过实例说明其使用方法。


这三者都是用来简化代码的工具,但可能会影响代码的可读性,在实际编码中要综合考虑是否采用这三种方法。


1. 推导式

Python中的推导式是一种简洁且强大的语法结构,用于从一个或多个可迭代对象高效地创建新的列表、集合、字典或生成器对象。以下是四种主要类型的推导式:


1.1 列表推导式

列表推导式用于快速生成列表,它可以包含一个或多个循环以及条件表达式。


基本语法:

new_list = [expression for item in iterable if condition]

例如:

squares = [x**2 for x in range(10)]  # 创建一个包含前10个整数平方的列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]  # 创建只包含偶数平方的列表

print输出为:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 4, 16, 36, 64]


1.2 集合推导式

集合推导式用于创建无重复元素的集合,语法类似于列表推导式。


基本语法:

new_set = {expression for item in iterable if condition}

例如:

unique_even_numbers = {x for x in [1, 2, 2, 3, 4, 4, 4, 5, 6] if x % 2 == 0}  # 创建一个仅包含唯一偶数的集合

print输出为:

{2, 4, 6}

注意:与上面列表推导式不同,集合推导式会自动滤去重复元素,以下面代码为例:

a = {x for x in [1,2,2,3,3,4,5,5]}

print输出为:

{1, 2, 3, 4, 5}
1.3 字典推导式

字典推导式用于创建字典,其中键值对是通过某种表达式和迭代过程生成的。


基本语法:

new_dict = {key_expression: value_expression for item in iterable if condition}

例如:

dict_even_square = {i:i**2 for i in range(10) if i%2==0}

print输出为:

{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
2.4 生成器推导式

生成器推导式看起来与列表推导式相似,但它不直接创建列表,而是生成一个生成器对象,可以逐个产生所需的结果,节省内存。


基本语法:

generator = (expression for item in iterable if condition)

例如:

gen_squares = (x**2 for x in range(5))   # 创建一个生成器,按需生成前5个整数的平方
print(type(gen_squares))
for i in gen_squares:
    print(i)

输出为:

<class 'generator'>
0
1
4
9
16


在以上各个推导式中,expression 是针对 item 计算的新值,iterable 是用于迭代的数据源,if condition 是可选的筛选条件。通过这些结构,Python程序员可以方便地对数据进行转换、筛选和聚合,提升代码的简洁性和执行效率。


2. 条件表达式

Python中的条件表达式,也称为三元运算符,它允许在一行内根据某个条件来决定返回哪个值。条件表达式的语法结构如下:


value_if_true if condition else value_if_false


这里的 condition 是一个布尔表达式,如果 condition 的结果为 True,那么整个条件表达式的值就是 value_if_true;反之,如果 conditionFalse,则整个表达式的值就是 value_if_false


举例来说:


age = 18
status = "成年" if age >= 18 else "未成年"


print输出为:


成年


在这个例子中,如果 age 大于等于18,则 status 变量会被赋值为字符串 “成年”,否则会被赋值为 “未成年”。


而条件表达式也可以实现多个条件的判断,例如下例:


age = 61
status = "未成年" if age < 18 else "成年" if age < 60 else "老年"


print输出为:


老年


条件表达式相比于传统的 if-else 结构更为紧凑,尤其适用于简单的情况,但请注意,对于复杂的逻辑判断,使用多行的 if-else 语句可能会提高代码的可读性。


总结来说,条件表达式是推导式中常用来进行逻辑选择的部分,它可以内嵌在推导式的结构里,共同服务于数据处理和代码简化的目的。


3. Lambda函数


Python 中的 Lambda 函数是一种简化的、匿名的函数定义方式,它允许开发者在不显式定义函数名称的情况下快速编写小型的单行函数。Lambda 函数特别适用于仅需一次性使用的简单功能场合,或者作为其他高阶函数(如 map(), filter(), reduce() 等)的参数。


Lambda 函数的基本语法格式如下:


lambda arguments: expression


  • arguments: 参数列表,可以有一个或多个参数,多个参数之间用逗号 , 分隔。


  • expression: 单一的表达式,此表达式的计算结果将作为 Lambda 函数的返回值。注意,Lambda 函数不允许有复杂的逻辑结构,只能是单个表达式。


举例说明:

  1. 创建一个简单的 Lambda 函数,用于计算两个数的和:

add = lambda x, y: x + y
print(add(3, 5))  # 输出:8


  1. 使用 Lambda 函数作为 map() 函数的参数(这个用法类似列表推导式):

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出:[1, 4, 9, 16, 25]


通过 Lambda 函数,可以在不需要定义完整函数的情况下实现简单的操作,增强了代码的简洁性和灵活性。然而,对于较为复杂的功能逻辑,通常建议使用常规的 def 关键字定义的函数以提高代码可读性。


相关文章
|
2天前
|
Python
Python 中 help() 和 dir() 函数的用法
【8月更文挑战第29天】
14 5
|
3天前
|
Python
12类常用的Python函数
12类常用的Python函数
|
2天前
|
Python
Python eval()函数的使用
Python eval()函数的使用
8 1
|
2天前
|
Python
Python 中的 Lambda 函数是什么?
【8月更文挑战第29天】
6 0
|
2天前
|
存储 数据挖掘 数据库
探索Python编程:从基础到高级探索移动应用开发之旅:从概念到实现
【8月更文挑战第29天】本文将带你进入Python的世界,无论你是初学者还是有一定经验的开发者。我们将从Python的基础知识开始,然后逐步深入到更复杂的主题。你将学习到如何编写清晰、高效的代码,以及如何使用Python进行数据分析和网络编程。最后,我们将介绍一些高级主题,如装饰器和生成器。让我们一起开始这段旅程吧!
|
1天前
|
存储 Kubernetes Cloud Native
探索Python编程的奥秘云原生时代的容器编排:Kubernetes入门与实践
【8月更文挑战第30天】本文以浅显易懂的方式,探讨了Python编程的核心概念和技巧。从基础语法到高级特性,再到实际应用案例,逐步引导读者深入理解Python编程的精髓。通过本文的学习,读者将能够掌握Python编程的基本技能,并激发进一步探索的兴趣。
19 13
|
1天前
|
运维 Kubernetes Cloud Native
云原生之旅:Kubernetes 集群的搭建与实践Python 编程入门:从零基础到编写实用脚本
【8月更文挑战第30天】在数字化转型的大潮中,云原生技术以其弹性、可扩展性及高效运维能力成为企业IT架构升级的关键。本文将通过实际操作演示如何在本地环境搭建一个简易的Kubernetes集群,带你领略云原生的魅力所在。从集群规划到服务部署,每一步都是对云原生理念的深刻理解和应用。让我们共同探索,如何通过Kubernetes集群的搭建和运维,提升业务灵活性和创新能力。
|
1天前
|
数据采集 运维 Devops
探索Python编程之美:从基础到进阶自动化运维的变革之路:从脚本到DevOps
【8月更文挑战第30天】在数字化时代的浪潮中,编程已经成为一门重要的技能。Python以其简洁明了的语法和强大的功能,成为了许多初学者的首选编程语言。本文将通过浅显易懂的语言,带领读者从Python的基础语法出发,逐步深入到面向对象编程、网络爬虫开发以及数据分析等高级应用,旨在帮助初学者构建扎实的编程基础,并激发他们进一步探索编程世界的热情。文章不仅分享实用的编程技巧,还将探讨如何将编程知识应用于解决实际问题,以期培养读者的问题解决能力和创新思维。
|
1天前
|
数据采集 数据可视化 数据挖掘
探索Python编程的奥秘:从基础到进阶Python中的装饰器:简化代码,提升效率
【8月更文挑战第30天】在这个数字技术飞速发展的时代,掌握一门编程语言已经成为了许多人追求的目标。Python,作为一门易于学习且功能强大的编程语言,吸引了无数初学者和专业人士的目光。本文将带领读者从Python的基础语法出发,逐步深入到函数、模块、面向对象编程等高级特性,最后通过实际案例展示Python在数据分析和网络爬虫领域的应用。无论你是编程新手还是希望提升自己的Python技能,这篇文章都将为你打开一扇通往Python世界的大门。
|
2天前
|
数据采集 数据挖掘 开发者
Python编程入门:从基础到实战
【8月更文挑战第30天】本文将带你走进Python的世界,从基本语法开始,逐步深入到数据结构、函数、面向对象编程等高级特性。我们将通过实际案例,如网页爬虫和数据分析,展示如何应用所学知识解决实际问题。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供宝贵的指导和启发。
下一篇
云函数