在 Python 中,推导式(Comprehension)是一种简洁、高效的语法,用于快速生成列表、集合、字典等数据结构。
Python 支持以下三种推导式:
1.列表推导式(List Comprehension)
列表推导式可以用于快速生成列表。语法格式为:
[expression for item in iterable if condition]
其中,expression
是一个表达式,用于计算列表中的元素;item
是可迭代对象中的元素;iterable
是可迭代对象,例如列表、元组、字符串等;condition
是一个可选的条件,用于过滤元素。
例如,生成一个 1~10 的平方数列表:
# 1. 列表推导式(List Comprehension)
squares = [x**2 for x in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2.集合推导式(Set Comprehension)
集合推导式可以用于快速生成集合。语法格式与列表推导式类似,只是使用 {}
括号表示集合。
{expression for item in iterable if condition}
例如,生成一个 1~10 的平方数集合:
# 2.集合推导式(Set Comprehension)
squares = {x**2 for x in range(1, 11)}
print(squares) # {64, 1, 4, 36, 9, 16, 49, 81, 25, 100}
3.字典推导式(Dictionary Comprehension)
字典推导式可以用于快速生成字典。语法格式为:
{key_expression: value_expression for item in iterable if condition}
其中,key_expression
和 value_expression
分别是计算字典键和值的表达式。
例如,生成一个 1~10 的平方数字典:
# 3.字典推导式
squares = {x: x**2 for x in range(1, 11)}
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
4.带条件推导式 if
1.[expression for item in iterable if condition] 满足condition的元素会被过滤
squares = [x**2 for x in range(1, 11) if x%2==0]
print(squares) # [4, 16, 36, 64, 100]
2.[expression1 if condition else expression 2 for item in iterable ]
squares = [x ** 2 if x % 2 == 0 else 2 * x for x in range(1, 11)]
print(squares) # [2, 4, 6, 16, 10, 36, 14, 64, 18, 100]
总的来说,推导式是 Python 中非常常用的语法,可以方便地生成列表、集合、字典等数据结构,提高代码的简洁性和可读性。