Python3 推导式(Comprehensions)详解
Python 推导式是一种简洁且强大的语法,用于快速创建 列表(List)、字典(Dictionary)、集合(Set) 等数据结构。使用推导式可以减少代码量,提高可读性,使代码更加 Pythonic。
1. Python 推导式的种类
Python 提供了以下几种推导式:
- 列表推导式(List Comprehension)
- 字典推导式(Dictionary Comprehension)
- 集合推导式(Set Comprehension)
- 生成器推导式(Generator Comprehension)
2. 列表推导式(List Comprehension)
基本语法
[表达式 for 变量 in 可迭代对象 if 条件]
🔹 示例 1:生成一个平方列表
squares = [x ** 2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
🔹 示例 2:筛选偶数
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers) # [0, 2, 4, 6, 8]
🔹 示例 3:多重循环
pairs = [(x, y) for x in range(3) for y in range(2)]
print(pairs) # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
3. 字典推导式(Dictionary Comprehension)
基本语法
{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}
🔹 示例 1:创建平方字典
squares_dict = {x: x ** 2 for x in range(1, 6)}
print(squares_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
🔹 示例 2:交换字典的键和值
original_dict = {'a': 1, 'b': 2, 'c': 3}
inverted_dict = {v: k for k, v in original_dict.items()}
print(inverted_dict) # {1: 'a', 2: 'b', 3: 'c'}
4. 集合推导式(Set Comprehension)
基本语法
{表达式 for 变量 in 可迭代对象 if 条件}
🔹 示例 1:创建平方集合
squares_set = {x ** 2 for x in range(1, 6)}
print(squares_set) # {1, 4, 9, 16, 25}
🔹 示例 2:去重
unique_chars = {char for char in "hello world"}
print(unique_chars) # {'w', 'r', 'e', 'o', 'h', 'd', 'l'}
5. 生成器推导式(Generator Comprehension)
基本语法
(表达式 for 变量 in 可迭代对象 if 条件)
🔹 示例 1:创建生成器
gen = (x ** 2 for x in range(1, 6))
print(next(gen)) # 1
print(next(gen)) # 4
print(list(gen)) # [9, 16, 25]
生成器推导式返回的是 生成器对象,可以使用 next() 逐步获取元素,或者转换为 list()。
6. 结论
✅ 列表推导式 用于快速创建列表
✅ 字典推导式 用于构建新的键值对字典
✅ 集合推导式 用于创建集合并去重
✅ 生成器推导式 生成一个可迭代的生成器对象,节省内存
更多详细内容请关注其他相关文章!