如何在 Python 编码中创建列表推导式

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Python 的列表推导式是创建列表的一种强大且简洁的方式。在本教程中,我们将探讨列表推导式的语法和结构,并深入研究一些高级技巧,以帮助你编写更高效、更易读的 Python 代码。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/list_comprehensions("List Comprehensions") python/DataStructuresGroup -.-> python/lists("Lists") python/AdvancedTopicsGroup -.-> python/iterators("Iterators") python/AdvancedTopicsGroup -.-> python/generators("Generators") subgraph Lab Skills python/conditional_statements -.-> lab-398165{{"如何在 Python 编码中创建列表推导式"}} python/list_comprehensions -.-> lab-398165{{"如何在 Python 编码中创建列表推导式"}} python/lists -.-> lab-398165{{"如何在 Python 编码中创建列表推导式"}} python/iterators -.-> lab-398165{{"如何在 Python 编码中创建列表推导式"}} python/generators -.-> lab-398165{{"如何在 Python 编码中创建列表推导式"}} end

列表推导式简介

列表推导式是在 Python 中创建列表的一种简洁而强大的方式。它允许你基于现有列表或其他可迭代对象(如字符串或范围)生成一个新列表。列表推导式是执行常见列表操作的紧凑且高效的方式,能使你的代码更具可读性和可维护性。

什么是列表推导式?

列表推导式是 Python 中的一种语法糖,它提供了一种简洁的方式来创建列表。它允许你通过对现有可迭代对象的每个元素应用转换或条件来创建一个新列表。这是使用传统 for 循环创建新列表的一种更简洁且易读的替代方法。

列表推导式的优点

  1. 简洁性:列表推导式允许你编写更紧凑、更具表现力的代码,减少创建新列表所需的行数。
  2. 可读性:列表推导式的语法通常更直观且不言自明,使你的代码更具可读性且易于理解。
  3. 性能:列表推导式可能比使用传统 for 循环更高效,因为它经过了 Python 解释器的优化。
  4. 灵活性:列表推导式可用于执行各种列表操作,如过滤、映射和转换元素。

列表推导式的基本语法

列表推导式的基本语法如下:

new_list = [expression for item in iterable]

在这里,expression 是你要对 iterable 中的每个元素执行的操作,而 item 是表示 iterable 中每个元素的变量。

让我们看一个简单的例子:

## 使用传统 for 循环创建一个平方数列表
squares = []
for i in range(1, 11):
    squares.append(i**2)
print(squares)  ## 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

## 使用列表推导式创建相同的列表
squares_lc = [i**2 for i in range(1, 11)]
print(squares_lc)  ## 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

在上面的例子中,列表推导式 [i**2 for i in range(1, 11)] 是创建与传统 for 循环相同的平方数列表的更简洁方式。

列表推导式的语法和结构

基本语法

Python 中列表推导式的基本语法如下:

new_list = [expression for item in iterable]

在这里,expression 是你想对 iterable 中的每个元素执行的操作,而 item 是表示 iterable 中每个元素的变量。

条件列表推导式

你还可以向列表推导式中添加条件语句,这使你能够筛选出新列表中包含的元素。其语法如下:

new_list = [expression for item in iterable if condition]

if condition 部分是可选的,可用于根据特定条件筛选元素。

下面是一个示例:

## 使用列表推导式创建一个偶数列表
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)  ## 输出:[2, 4, 6, 8, 10]

在这个示例中,列表推导式 [x for x in range(1, 11) if x % 2 == 0] 从 1 到 10 的范围内创建了一个新的偶数列表。

嵌套列表推导式

你还可以使用嵌套列表推导式来创建更复杂的数据结构,例如列表的列表或矩阵。嵌套列表推导式的语法如下:

new_list = [[expression for item1 in iterable1] for item2 in iterable2]

下面是一个使用嵌套列表推导式创建 3x3 矩阵的示例:

## 使用嵌套列表推导式创建一个 3x3 矩阵
matrix = [[j for j in range(i*3, (i+1)*3)] for i in range(3)]
print(matrix)
## 输出:[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

在这个示例中,外层列表推导式 [j for j in range(i*3, (i+1)*3)] for i in range(3)] 创建了一个包含三个列表的列表,其中每个内层列表代表矩阵中的一行。

列表推导式中的高级技巧

嵌套列表推导式

如前所述,你可以使用嵌套列表推导式来创建更复杂的数据结构,例如列表的列表或矩阵。当你需要对多维数据执行操作时,此技术会特别有用。

## 使用嵌套列表推导式创建一个 3x3 矩阵
matrix = [[j for j in range(i*3, (i+1)*3)] for i in range(3)]
print(matrix)
## 输出:[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

在这个示例中,外层列表推导式 [j for j in range(i*3, (i+1)*3)] for i in range(3)] 创建了一个包含三个列表的列表,其中每个内层列表代表矩阵中的一行。

条件表达式

你还可以在列表推导式中使用条件表达式(也称为三元运算符)。这可以使你的代码更加简洁和易读。

## 使用带有条件表达式的列表推导式创建一个绝对值列表
numbers = [-5, -3, 0, 3, 5]
abs_values = [abs(x) for x in numbers]
print(abs_values)  ## 输出:[5, 3, 0, 3, 5]

在这个示例中,列表推导式 [abs(x) for x in numbers] 使用 abs() 函数来计算 numbers 列表中每个数字的绝对值。

将列表推导式与其他函数结合使用

你可以将列表推导式与其他内置函数(如 map()filter()zip())结合使用,以创建更强大、更具表现力的代码。

## 将列表推导式与 map() 和 filter() 结合使用
numbers = [1, 2, 3, 4, 5]
doubled_even_numbers = [x*2 for x in map(lambda x: x*2, filter(lambda x: x % 2 == 0, numbers))]
print(doubled_even_numbers)  ## 输出:[4, 8, 16]

在这个示例中,列表推导式 [x*2 for x in map(lambda x: x*2, filter(lambda x: x % 2 == 0, numbers))] 首先过滤 numbers 列表,只保留偶数,然后将每个偶数映射为其两倍,最后创建一个包含两倍偶数的新列表。

通过将列表推导式与其他强大的 Python 函数结合使用,你可以创建简洁且富有表现力的代码,既易读又高效。

总结

Python 中的列表推导式是一种多功能工具,它使你能够以紧凑且富有表现力的方式创建列表。通过理解其语法、结构和高级技巧,你可以编写更高效、更易读的 Python 代码。本教程为你提供了相关知识和技能,以充分利用列表推导式的强大功能,并将你的 Python 编程提升到一个新的水平。