当前位置: 首页 > news >正文

Python(14)推导式

        在 Python 编程中,推导式是一种强大而简洁的语法结构,它能让开发者以简洁的方式从一个数据序列创建另一个新的数据序列。无论是处理列表、字典、集合还是元组,推导式都能大显身手。这篇博客将结合菜鸟教程中的内容,通过丰富的代码示例,深入学习 Python3 推导式,方便日后复习回顾。

一、列表推导式

列表推导式是最常见的推导式之一,它的基本格式有两种:

  • [表达式 for 变量 in 列表]
  • [表达式 for 变量 in 列表 if 条件]

1.1 基础应用:生成新列表

        通过对已有列表元素进行简单运算来生成新列表。例如,将一个包含数字的列表中每个元素都乘以 2:

nums = [1, 2, 3, 4, 5]
new_nums = [num * 2 for num in nums]
print(new_nums) 

        在这段代码中,num * 2是表达式,num是变量,nums是原列表。for num in nums表示对nums中的每个元素进行迭代,将每个元素num代入表达式num * 2,并将结果存储在新列表new_nums中。

1.2 条件筛选:过滤列表元素

        使用条件语句筛选符合特定条件的元素。比如,从一个列表中筛选出所有偶数:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = [num for num in nums if num % 2 == 0]
print(even_nums) 

        这里if num % 2 == 0是条件语句,只有满足该条件(即num是偶数)的元素才会被添加到新列表even_nums中。

1.3 结合函数:灵活处理列表元素

        表达式可以是有返回值的函数。例如,定义一个函数将字符串首字母大写,然后对列表中的字符串元素进行处理:

def capitalize_str(s):return s.capitalize()words = ['python', 'java', 'c++']
new_words = [capitalize_str(word) for word in words]
print(new_words) 

        在这个例子中,capitalize_str(word)作为表达式,对words列表中的每个字符串元素进行处理,生成新的列表new_words


二、字典推导式

字典推导式用于创建字典,基本格式同样有两种:

  • { key_expr: value_expr for value in collection }
  • { key_expr: value_expr for value in collection if condition }

2.1 基础应用:创建键值对字典

        以列表元素为键,元素的某个属性为值创建字典。例如,根据一个包含水果名称的列表,创建一个以水果名称为键,水果名称长度为值的字典:

fruits = ['apple', 'banana', 'cherry']
fruit_dict = {fruit: len(fruit) for fruit in fruits}
print(fruit_dict) 

        在这段代码中,fruit是键表达式,len(fruit)是值表达式,fruits是集合。通过遍历fruits列表,将每个水果名称作为键,其长度作为值,创建了字典fruit_dict

2.2 条件筛选:根据条件创建字典

        使用条件筛选符合要求的元素来创建字典。比如,从一个包含数字的列表中,创建一个以偶数为键,偶数平方为值的字典:

nums = [1, 2, 3, 4, 5, 6]
even_square_dict = {num: num ** 2 for num in nums if num % 2 == 0}
print(even_square_dict) 

        这里if num % 2 == 0是条件语句,只有满足条件的偶数num才会被用于创建字典的键值对,其值为该偶数的平方。


三、集合推导式

集合推导式用于创建集合,基本格式为:

  • { expression for item in Sequence }
  • { expression for item in Sequence if conditional }

3.1 基础应用:生成集合

        对一个可迭代对象中的元素进行运算,生成一个集合。例如,计算一个列表中每个元素的平方,生成一个平方数集合:

nums = [1, 2, 3, 4, 5]
square_set = {num ** 2 for num in nums}
print(square_set) 

        在这段代码中,num ** 2是表达式,num是变量,nums是序列。通过对nums中的每个元素进行平方运算,将结果存储在集合square_set中。由于集合的元素唯一性,重复的平方数只会出现一次。

3.2 条件筛选:筛选集合元素

        根据条件筛选可迭代对象中的元素,生成符合条件的集合。比如,从一个字符串中筛选出不是元音字母的字符集合:

s = 'hello world'
non_vowel_set = {char for char in s if char not in 'aeiou'}
print(non_vowel_set) 

        这里if char not in 'aeiou'是条件语句,只有满足该条件(即字符不是元音字母)的字符才会被添加到集合non_vowel_set中。


四、元组推导式(生成器表达式)

元组推导式(严格来说是生成器表达式)的基本格式为:

  • (expression for item in Sequence )
  • (expression for item in Sequence if conditional )

它与列表推导式类似,但返回的是一个生成器对象。如果需要得到元组,可以使用tuple()函数进行转换。

4.1 基础应用:生成生成器对象

        创建一个生成器对象,用于生成一系列数据。例如,生成 1 到 10 的整数的立方的生成器:

cube_generator = (num ** 3 for num in range(1, 11))
print(cube_generator) 

        这里num ** 3是表达式,num是变量,range(1, 11)是序列。运行代码后,会输出一个生成器对象。如果需要获取生成器中的数据,可以使用循环遍历或转换为元组等方式。

4.2 转换为元组:获取最终元组数据

        将生成器对象转换为元组。例如,将上述生成器对象转换为元组:

cube_tuple = tuple(cube_generator)
print(cube_tuple) 

        运行代码后,cube_tuple就是包含 1 到 10 的整数的立方的元组。


五、总结

        Python3 推导式是一种高效、简洁的数据处理工具,能够帮助开发者快速创建和处理列表、字典、集合和元组。通过合理运用推导式,可以减少代码量,提高代码的可读性和执行效率。在实际编程中,要根据具体需求选择合适的推导式,并注意保持代码的简洁性和可读性。希望这篇博客能帮助你更好地复习和巩固 Python3 推导式的知识,在编程中灵活运用推导式解决各种问题。

http://www.xdnf.cn/news/199225.html

相关文章:

  • Linux文件的一般权限
  • 2799. 统计完全子数组的数目
  • [Spring] Sentinel详解
  • Linux常见基础命令
  • i/o复用函数的使用——epoll
  • jclasslib 与 BinEd 结合的二进制分析技术指南
  • 【计算机系统结构】第四章
  • 利用EMQX实现单片机和PyQt的数据MQTT互联
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记6
  • 计算机基础—(九道题)
  • 云上玩转DeepSeek系列之六:DeepSeek云端加速版发布,具备超高推理性能
  • AI图片跳舞生成视频,animate X本地部署。
  • 2025系统架构师---论企业集成平台的技术与应用
  • 永磁同步电机控制算法-反馈线性化滑模控制
  • Telephony VoiceMail
  • 数据库基础与核心操作:从概念到实战的全面解析
  • 嵌入式多功能浏览器系统设计详解
  • 使用双端队列deque模拟栈stack
  • 获得ecovadis徽章资格标准是什么?ecovadis评估失败的风险
  • sortablejs + antd-menu 拖拽出重复菜单
  • 【个人理解】MCP server和client二者各自的角色以及发挥的作用
  • 【TS入门笔记4---装饰器】
  • DPanel 一款更适合国人的 Docker 管理工具
  • linux 使用nginx部署vue、react项目
  • 结合大语言模型的机械臂抓取操作学习
  • Python 中支持函数式编程的 operator 与 functools 包
  • 第一节:Linux系统简介
  • Android显示学习笔记本
  • 打造即插即用的企业级云原生平台——KubeSphere 4.1 扩展组件在生产环境的价值全解
  • 解决跨域实现方案