Python3 推导式(Comprehensions)详解
                           
天天向上
发布: 2025-03-14 22:42:42

原创
898 人浏览过

Python 推导式是一种简洁且强大的语法,用于快速创建 列表(List)、字典(Dictionary)、集合(Set) 等数据结构。使用推导式可以减少代码量,提高可读性,使代码更加 Pythonic。


1. Python 推导式的种类

Python 提供了以下几种推导式:

  1. 列表推导式(List Comprehension)
  2. 字典推导式(Dictionary Comprehension)
  3. 集合推导式(Set Comprehension)
  4. 生成器推导式(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. 结论

列表推导式 用于快速创建列表
字典推导式 用于构建新的键值对字典
集合推导式 用于创建集合并去重
生成器推导式 生成一个可迭代的生成器对象,节省内存

更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *