Python 推导式详解:列表、字典与集合的简洁写法
本文详细介绍 Python 中的三种推导式:列表、字典和集合推导式。通过具体代码示例,演示如何简化循环逻辑,实现数据转换、条件过滤及去重功能,帮助开发者写出更简洁高效的 Python 代码。
Python 提供了三种主要的推导式类型,用于简化序列数据的创建与处理。
- 列表推导式
- 字典推导式
- 集合推导式
列表推导式
其核心语法结构为:
[表达式 for 变量 in 可迭代对象]
示例说明
目标是生成包含 0 到 16 平方值的列表,即 [0, 1, 4, 9, 16]。
在掌握推导式之前,通常需要通过显式循环来实现该功能。
li = []
for i in range(5): # 循环5次取值
res_i = i * i # 进行每次取值的处理
li.append(res_i) # 将处理的值加入列表
print(li) # 循环结束打印生成的列表执行后的输出结果为:
[0, 1, 4, 9, 16]
虽然上述传统方法功能正常,但代码行数较多。使用列表推导式可以显著简化代码,同时提升可读性。
new_list = [i*i for i in range(5)]
print(new_list)使用推导式后的输出结果为:
[0, 1, 4, 9, 16]
若需根据特定条件筛选元素,可在推导式末尾添加 if 条件判断。
[表达式 for 变量 in 可迭代对象 if 条件]
示例说明
定义列表 li = [2, 7, 4, 8, -12, -15, 3, -4, -7]。
任务是将列表中所有小于 0 的元素进行平方运算,并将结果存入新列表。
li = [2, 7, 4, 8, -12, -9, 3, -4, -7]
new_li = [i ** 2 for i in li if i < 0]
print(new_li)执行后的输出结果为:
[144, 81, 16, 49]
嵌套循环推导式
示例说明
目标生成列表 li,内容为字符串组合。
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
li = [i + j for i in '123' for j in 'abc']
print(li)执行后的输出结果为:
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
字典推导式
其基本语法格式为:
{键表达式: 值表达式 for 变量 in 可迭代对象}
示例说明
构建一个字典对象。
字典的键(key)取自列表 li 中元素的索引位置。
字典的值(value)对应列表中的实际元素。
li = ["age", "name", "gender"]。
li = ["age", "name", "gender"]
dic = {li.index(i): i for i in li}
print(dic)执行后的输出结果为:
{0: 'age', 1: 'name', 2: 'gender'}
此外,字典推导式还可用于快速交换字典的键和值。
dic1 = {0: "0", 1: "1", 2: "2"}
dic2 = {v: k for k, v in dic1.items()}
print(dic2)执行后的输出结果为:
{'0': 0, '1': 1, '2': 2}
集合推导式
集合的一个显著特性是自动去除重复元素。
其基本语法格式为:
{表达式 for 变量 in 可迭代集合}
示例说明
随机生成 10 个 1 至 100 之间的整数,并利用集合特性自动去重。
import random
s1 = {random.randint(1,100) for i in range(10)}
print(s1)执行后的输出结果为:
{89, 37, 73, 42, 82, 87, 56, 25, 29}
以上即为 Python 中三种推导式的介绍及其具体用法。
本文介绍了 Python 特有语法推导式的基本使用,更多相关内容可参考本站其他文章或继续浏览后续内容,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













