本文最后更新于425 天前,其中的信息可能已经过时,如有错误请发送邮件到blue16@email.swu.edu.cn
定义
在Python中,推导式(comprehensions)是一种简洁的方式来创建列表、字典、集合和生成器。推导式可以让我们用一行代码就能完成在迭代过程中进行条件判断和转换数据结构的任务。
列表推导式(List Comprehensions)
列表推导式是最常见的推导式,它可以将一个列表转换成另一个列表。
# 基本的列表推导式
numbers = [1, 2, 3, 4, 5]
squared = [x**2 for x in numbers]
print(squared) # 输出: [1, 4, 9, 16, 25]
# 带有条件的列表推导式
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares) # 输出: [4, 16]
字典推导式(Dictionary Comprehensions)
字典推导式可以创建新的字典,它通常用来转换键和值。
# 字典推导式
original_dict = {'a': 1, 'b': 2, 'c': 3}
squared_dict = {k: v**2 for k, v in original_dict.items()}
print(squared_dict) # 输出: {'a': 1, 'b': 4, 'c': 9}
# 带条件的字典推导式
filtered_dict = {k: v for k, v in original_dict.items() if v % 2 == 0}
print(filtered_dict) # 输出: {'b': 2}
集合推导式(Set Comprehensions)
集合推导式和列表推导式类似,但是它生成的是集合,因此不会有重复的元素。
# 集合推导式
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_squares = {x**2 for x in numbers}
print(unique_squares) # 输出: {1, 4, 9, 16, 25}
生成器推导式(Generator Comprehensions)
生成器推导式和列表推导式类似,但是它使用圆括号而不是方括号,它返回的是一个生成器对象。
# 生成器推导式
numbers = [1, 2, 3, 4, 5]
squared_gen = (x**2 for x in numbers)
for square in squared_gen:
print(square) # 输出: 1 4 9 16 25
记忆方法
for i in range(n,2),这是一个循环,前面加上赋值的元素,比如i**2,后面加上条件,例如i%2==1,然后用什么括起来(列表、字典、生成器),就是什么推导式。推导式的目的是生成列表、字典,或者生成生成器然后再调用循环。








