当前位置: 首页 > 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 推导式的知识,在编程中灵活运用推导式解决各种问题。

相关文章:

  • PCI/PXI 总线的可编程电阻卡
  • JVM模型、GC、OOM定位
  • leetcode 876. 链表的中间结点
  • 云上玩转DeepSeek系列之六:DeepSeek云端加速版发布,具备超高推理性能
  • SpringBoot实现接口防刷的5种高效方案详解
  • 安装qt4.8.7
  • cuDNN 安装、版本查看及指定版本删除操作指南
  • 社交电商和泛娱乐平台出海南美市场支付方式与策略
  • 人工智能搜索时代:如何优化SEO以保持领先
  • Context7 MCP:提供实时、版本特定的文档以解决AI幻觉问题
  • 【爬虫】一文掌握 adb 的各种指令(adb备忘清单)
  • 普发ASM392EUV检漏仪维修说明手测内容可目录
  • 厚铜pcb生产厂家哪家好?
  • 媒资管理之视频管理
  • 【Python数据驱动决策】数据分析与可视化全流程实战指南
  • django admin.E035 处理办法
  • 数据结构每日一题day12(链表)★★★★★
  • 链表相关——Python实现
  • 二进制、高位低位、位移操作与进制转换全解
  • 汽车行业EDI教程——北美X12标准 AS2连接配置与实现
  • 西湖大学本科招生新增三省两市,首次面向上海招生
  • 北京公园使用指南
  • 中消协发布“五一”消费提示:践行“光盘行动”,抵制餐饮浪费
  • 五万吨级半潜船在沪完成装备装载
  • 图像编辑新增一款开源模型,阶跃星辰发布Step1X-Edit
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存