在 Python 中,列表推导式是一种简单而强大的方法来创建列表。它允许你在单个语句中指定一个表达式和一个循环,并在每次迭代时计算表达式的值。
例如,你可以使用列表推导式来创建一个列表,其中包含所有整数的平方:
squares = [x**2 for x in range(10)]
print(squares)
输出:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
你也可以使用列表推导式来创建一个列表,其中包含所有偶数的平方:
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)
输出:
[0, 4, 16, 36, 64]
在这个例子中,我们使用了一个过滤器来选择只包含偶数的平方的列表。
你也可以使用列表推导式来创建复杂的列表。例如,你可以创建一个列表,其中包含所有坐标对的列表:
coords = [(x, y) for x in range(5) for y in range(3)]
print(coords)
输出:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2)]
在这个例子中,我们使用了两个循环来创建所有可能的坐标对。
你还可以使用列表推导式来嵌套循环,使用多个过滤器,并使用复杂的表达式。例如,你可以使用列表推导式来创建一个列表,其中包含所有奇数的平方根:
odd_square_roots = [int(x**0.5) for x in range(10) if x % 2 != 0]
print(odd_square_roots)
输出:
[0, 1, 2, 3]
在这个例子中,我们使用了一个过滤器来选择只包含奇数的平方根,并使用了 int()
函数来将平方根转换为整数。
另外,你也可以使用列表推导式来创建字典和集合。例如,你可以使用列表推导式来创建一个字典,其中键是数字的平方,值是数字的平方根:
square_root_dict = {x: int(x**0.5) for x in range(10)}
print(square_root_dict)
输出:
{0: 0, 1: 1, 4: 2, 9: 3, 16: 4, 25: 5, 36: 6, 49: 7, 64: 8, 81: 9}
在这个例子中,我们使用了一个列表推导式来创建一个字典,其中键是数字的平方,值是数字的平方根。
你还可以使用列表推导式来进行解析和转换。例如,你可以使用列表推导式来将一个字符串列表转换为整数列表:
numbers = ['1', '2', '3', '4']
int_numbers = [int(x) for x in numbers]
print(int_numbers)
输出:
[1, 2, 3, 4]
在这个例子中,我们使用了一个列表推导式来将字符串列表转换为整数列表。
你还可以使用列表推导式来执行解析和转换的复杂任务。例如,你可以使用列表推导式来解析 CSV 文件并将其转换为字典列表:
import csv
with open('data.csv', 'r') as f:
reader = csv.DictReader(f)
data = [row for row in reader]
print(data)
在这个例子中,我们使用了一个列表推导式来读取 CSV 文件并将其转换为字典列表。
总之,列表推导式是 Python 中一种非常有用的工具,可以让你在单个语句中快速创建列表、字典和集合,并执行解析和转换任务。