列表推导式
列表推导式是一种简洁的创建列表的方法,可以包含条件语句和嵌套循环。
推导式的执行顺序是:从左到右,先执行外层循环,再执行内层循环。
# 生成1到10的平方列表,仅包含偶数
squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(squares) # 输出: [4, 16, 36, 64, 100]
生成器表达式
生成器表达式与列表推导式类似,但使用圆括号而不是方括号,生成的是一个生成器对象,适合处理大数据集。
# 生成1到10的平方生成器,仅包含偶数
squares_gen = (x**2 for x in range(1, 11) if x % 2 == 0)
for square in squares_gen:
print(square) # 输出: 4, 16, 36, 64, 100
字典推导式
字典推导式用于创建字典,可以包含条件语句和嵌套循环。
# 生成1到10的平方字典,仅包含偶数
squares_dict = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print(squares_dict) # 输出: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
集合推导式
集合推导式用于创建集合,可以包含条件语句和嵌套循环。
# 生成1到10的平方集合,仅包含偶数
squares_set = {x**2 for x in range(1, 11) if x % 2 == 0}
print(squares_set) # 输出: {16, 64, 4, 36, 100}
复杂推导式示例
推导式可以嵌套使用,处理更复杂的数据结构。
# 生成一个包含嵌套列表的字典,键为1到5,值为对应键的平方列表,仅包含偶数
complex_dict = {x: [y**2 for y in range(1, x+1) if y % 2 == 0] for x in range(1, 6)}
print(complex_dict) # 输出: {1: [], 2: [4], 3: [4], 4: [4, 16], 5: [4, 16]}
等效于(字典推导式的值部分可以包含独立推导式,字典级循环始终是外层):
result = {}
for x in range(5): # 外层循环(字典级)
result[x] = [y for y in range(x)] # 值部分的列表推导式
推导式中的多重条件
推导式可以包含多个条件,使用逻辑运算符连接。
# 生成1到20的平方列表,仅包含能被2或3整除的数
squares = [x**2 for x in range(1, 21) if x % 2 == 0 or x % 3 == 0]
print(squares) # 输出: [4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]
推导式中的嵌套循环
推导式可以包含嵌套循环,处理多维数据。
# 生成一个包含所有可能组合的列表,其中x和y的范围为1到3
combinations = [(x, y) for x in range(1, 4) for y in range(1, 4)]
print(combinations) # 输出: [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
这段推导式等效于:
result = []
for x in range(3): # 外层循环
for y in range(3): # 内层循环
result.append((x,y))
推导式是Python中非常强大的工具,能够简洁高效地处理数据生成和转换任务。
1060

被折叠的 条评论
为什么被折叠?



