Skip to content

推导式

推导式是一种简洁的语法结构,可以用来创建列表、集合、字典等数据结构。

列表推导式

列表推导式是一种创建列表的简洁方式。

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]
  1. expression:表达式,可以是任何有效的表达式,如变量、函数调用等。
  2. item:迭代器中的元素。
  3. iterable:可迭代对象,如列表、元组、字符串等。
  4. 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)]
  1. 外层推导式:创建列表,包含 5 个元素,每个元素是一个元组。
  2. 内层推导式:创建元组,包含 5 个元素,每个元素是对应元素的平方。

推导式的限制

推导式有一些限制,主要是性能和可读性。

  1. 性能:推导式的性能比循环要差很多,尤其是当数据量很大时。
  2. 可读性:推导式的可读性不如循环,而且容易出错。