通过示例解释 Python 列表推导

列表推导式提供了一种在 Python 中创建列表的简洁方法。与使用传统循环相比,它们更易读且通常更高效。本文将探讨列表推导式是什么、其工作原理,并提供示例来说明其用法。

什么是列表推导?

列表推导式是一种紧凑的方法,用于处理集合中的全部或部分元素并返回包含结果的列表。列表推导式的语法为:

[expression for item in iterable if condition]

这里,expression 是迭代中的当前项,但它也是结果,您可以在它最终成为列表项之前对其进行操作。iterable 是您正在循环的集合,condition 是一个可选过滤器,仅包含满足条件的项。

基本示例

创建方块列表

要创建从 0 到 9 的数字平方列表,可以使用列表推导,如下所示:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = [x ** 2 for x in numbers]
print(squares)

输出:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

筛选项目

您还可以添加条件来过滤项目。例如,从列表中仅获取偶数:

even_squares = [x ** 2 for x in numbers if x % 2 == 0]
print(even_squares)

输出:

[0, 4, 16, 36, 64]

扁平化列表列表

如果您有一个列表列表并且想要将其展平,则可以使用列表推导:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for sublist in list_of_lists for item in sublist]
print(flattened)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

高级示例

应用函数

你可以在列表推导中应用函数。例如,将字符串列表转换为大写:

words = ['hello', 'world', 'python']
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

输出:

['HELLO', 'WORLD', 'PYTHON']

嵌套推导

列表推导可以嵌套。例如,要创建一个元组列表 (i, j),其中 i 和 j 都是来自两个列表的元素:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
pairs = [(i, j) for i in list1 for j in list2]
print(pairs)

输出:

[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

结论

列表推导式提供了一种在 Python 中生成列表的强大而简洁的方法。它们可以简化您的代码,并通过用一行推导式替换多行循环代码来使其更具可读性。练习使用列表推导式,以更熟悉其语法和功能。