引言
Python推导式是一种简洁的构建列表(list)、集合(set)、字典(dict)等数据结构的方法。它允许我们从其他可迭代对象中快速创建新列表、集合或字典,并可以使用一个表达式来设置每个元素的格式。推导式分为列表推导式、集合推导式、字典推导式以及生成器表达式。
列表推导式
列表推导式提供了从其他列表创建列表的简洁方法。其基本形式如下:
[expression for item in iterable]
示例:
# 从1到10的平方
squares = [x**2 for x in range(1, 11)]
print(squares)
# 筛选列表中的偶数并平方
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)
集合推导式
集合推导式与列表推导式类似,但它返回的是一个集合,而不是列表。集合是一个无序的、不包含重复元素的集。
示例:
# 创建一个集合,包含1到10的平方,但去除了重复项(实际上,在这个例子中,没有重复项)
squared_set = {x**2 for x in range(1, 11)}
print(squared_set)
字典推导式
字典推导式允许你从其他可迭代对象快速创建字典。每个元素都是一个键值对。
示例:
# 创建一个字典,其键是1到5的数字,值是它们的平方
squared_dict = {x: x**2 for x in range(1, 6)}
print(squared_dict)
# 使用条件
even_squared_dict = {x: x**2 for x in range(1, 6) if x % 2 == 0}
print(even_squared_dict)
生成器表达式
生成器表达式与列表推导式类似,但它返回的是一个生成器对象,而不是一次性生成整个列表。生成器表达式用圆括号()
包围,而不是方括号[]
。
示例:
# 生成1到10的平方,但逐个生成
squares_gen = (x**2 for x in range(1, 11))
# 遍历生成器
for square in squares_gen:
print(square)