Python 推导式

概述

Python 推导式(Comprehensions)是一种非常强大和简洁的创建列表、字典和集合的方法。它们提供了一种简单而高效的语法,可以用一行代码来生成复杂的数据结构。本文将深入解析 Python 3 中的各种推导式类型,并提供示例和实际应用。

列表推导式

列表推导式是 Python 最常见的推导式类型之一。它允许您从现有的列表、元组或其他可迭代对象中创建新的列表,同时应用过滤和转换操作。基本语法如下:

new_list = [expression for item in iterable if condition]
  • expression 是要添加到新列表中的值或变量。
  • item 是可迭代对象中的每个元素。
  • iterable 是您想要从中创建新列表的现有数据集合。
  • condition 是一个可选项,用于过滤出不需要的元素。

例如,以下代码将创建一个包含从 0 到 9 的平方数的列表:

squares = [x**2 for x in range(10)]
print(squares)  # Output: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

字典推导式

字典推导式允许您使用一行代码从现有的列表、元组或其他可迭代对象创建新的字典。基本语法如下:

new_dict = {key: value for item in iterable if condition}
  • keyvalue 是键值对中的元素,可以是任何表达式。
  • 其余部分与列表推导式类似。

例如,以下代码将创建一个包含字母及其对应 ASCII 值的字典:

ascii_dict = {char: ord(char) for char in 'Python'}
print(ascii_dict)  # Output: {'P': 80, 'y': 121, 't': 116, 'h': 104, 'o': 111, 'n': 110}

集合推导式

集合推导式与列表和字典推导式非常相似,只是它们创建的是集合而不是列表。基本语法如下:

new_set = {expression for item in iterable if condition}
  • 其余部分与列表推导式类似。

例如,以下代码将创建一个包含从 0 到 9 的平方数的集合:

squares_set = {x**2 for x in range(10)}
print(squares_set)  # Output: {0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

嵌套推导式

Python 还支持嵌套推导式,允许您在单个表达式中创建更复杂的数据结构。例如:

matrix = [[j for j in range(3)] for i in range(3)]
print(matrix)
# Output: [[0, 1, 2], [0, 1, 2], [0, 1, 2]]

上面的代码创建了一个包含三个列表,每个列表包含三个从 0 到 2 的数字的矩阵。

结论

Python 推导式是一种强大而简洁的语法工具,可用于创建列表、字典和集合。它们提供了一种高效且易读的方式来处理数据,并在编写代码时节省了时间和精力。希望本文能帮助您更好地理解和使用 Python 3 中的推导式。