推导式
推导式是一种简洁的语法结构,可以用来创建列表、集合、字典等数据结构。
列表推导式
列表推导式是一种创建列表的简洁方式。
python
# 语法
[expression for item in iterable if condition]
# 示例
numbers = [1, 2, 3, 4, 5]
squares = [num**2 for num in numbers]
print(squares) # [1, 4, 9, 16, 25]
expression
:表达式,可以是任何有效的表达式,如变量、函数调用等。item
:迭代器中的元素。iterable
:可迭代对象,如列表、元组、字符串等。condition
:可选的条件,只有满足条件的元素才会被包含在结果中。
集合推导式
集合推导式是一种创建集合的简洁方式。
python
# 语法
{expression for item in iterable if condition}
# 示例
numbers = [1, 2, 3, 4, 5]
squares = {num**2 for num in numbers}
print(squares) # {1, 4, 9, 16, 25}
集合推导式的语法和列表推导式基本相同,只是将方括号改成了花括号。
字典推导式
字典推导式是一种创建字典的简洁方式。
python
# 语法
{key_expression: value_expression for item in iterable if condition}
# 示例
numbers = [1, 2, 3, 4, 5]
squares = {num: num**2 for num in numbers}
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
字典推导式的语法和列表推导式基本相同,只是增加了键值对的语法。
元组推导式
元组推导式是一种创建元组的简洁方式。
python
# 语法
(expression for item in iterable if condition)
# 示例
numbers = [1, 2, 3, 4, 5]
squares = tuple(num**2 for num in numbers)
print(squares) # (1, 4, 9, 16, 25)
元组推导式的语法和列表推导式基本相同,只是将圆括号改成了方括号。
嵌套推导式
推导式可以嵌套,即在表达式中嵌入另一个推导式。
python
# 语法
[(expression for item in iterable if condition) for item in iterable if condition]
# 示例
numbers = [1, 2, 3, 4, 5]
squares = [(num**2 for num in numbers) for num in numbers]
print(squares) # [(1, 4, 9, 16, 25), (1, 4, 9, 16, 25), (1, 4, 9, 16, 25), (1, 4, 9, 16, 25), (1, 4, 9, 16, 25)]
- 外层推导式:创建列表,包含 5 个元素,每个元素是一个元组。
- 内层推导式:创建元组,包含 5 个元素,每个元素是对应元素的平方。
推导式的限制
推导式有一些限制,主要是性能和可读性。
- 性能:推导式的性能比循环要差很多,尤其是当数据量很大时。
- 可读性:推导式的可读性不如循环,而且容易出错。