Python教程:列表推导式和嵌套的列表推导式讲解

1. 列表推导式介绍

Python中的列表推导式是一种非常简洁的表达式,它可以快速生成列表。它通常由一个表达式和一个 for 循环组成,并可以有一个或多个 if 子句。

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

[expression for item in iterable]

其中,expression 是要执行的操作,item 是 iterable 物件中的元素。

它们之间通过一个 for 关键字连接。在列表推导式中,可以使用各种操作符和函数来处理 iterable 对象中的元素。

举个例子:

# 将一个列表中的所有元素乘以 2

old_list = [1, 2, 3, 4, 5]

new_list = [i * 2 for i in old_list]

print(new_list)

输出结果为:

[2, 4, 6, 8, 10]

这里,expression 是 i * 2,item 是 iterable 中的每个元素 i。

2. 带条件的列表推导式

列表推导式还可以使用 if 语句来从 iterable 中选择符合条件的元素。

其语法格式如下:

[expression for item in iterable if condition]

当 condition 成立时,将 expression 应用于 item。

如果我们想要筛选出列表中所有的偶数,可以这样写:

# 筛选出列表中所有的偶数

old_list = [1, 2, 3, 4, 5]

new_list = [i for i in old_list if i % 2 == 0]

print(new_list)

输出结果为:

[2, 4]

这里,condition 是 i % 2 == 0,筛选出了 old_list 中所有的偶数。

3. 嵌套的列表推导式

在 Python 中,我们还可以使用嵌套的列表推导式来生成复杂的数据结构。

嵌套的列表推导式是在一个列表推导式内使用另一个列表推导式来生成嵌套列表。其语法格式如下:

[[expression for item in iterable] for item in iterable]

为了更好地理解,我们来看一个例子。

# 生成一个 3 行 4 列的矩阵

matrix = [[j for j in range(4)] for i in range(3)]

print(matrix)

输出结果为:

[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

这里,我们使用了两次列表推导式。第一个内层循环 j 生成了一个包含 0-3 共 4 个元素的列表,第二个外层循环 i 重复了 3 次内层循环,生成了包含 3 个相同的列表。

4. 带条件的嵌套列表推导式

在嵌套的列表推导式中,我们也可以使用 if 条件语句来选择元素。

下面是一个例子,我们将一个 3x3 的矩阵中的所有元素都乘以 2,但是只选择其中小于等于 4 的元素:

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

new_matrix = [[j * 2 for j in i if j <= 4] for i in matrix]

print(new_matrix)

输出结果为:

[[2, 4, 6], [8], []]

这里,我们首先对 matrix 进行了遍历,使用内层的列表推导式对每个元素都乘以了 2。然后,我们又在内层的列表推导式中添加了一个 if 条件语句,只选择小于等于 4 的元素。

5. 总结

在 Python 中,列表推导式和嵌套的列表推导式常用于生成列表、筛选数据和生成复杂的数据结构。掌握这些技巧可以使 Python 程序变得更加简洁、优雅。

我们可以使用列表推导式快速生成一个列表,并通过使用带条件的列表推导式和嵌套的列表推导式来从中筛选出符合条件的元素。这些技巧可以大大减少代码量,并提高代码的可读性。通过练习,我们可以更好地掌握这些技巧,并将它们应用到实际的开发工作中。

后端开发标签