List推导式是 Python 最令人惊叹的特性之一。这是一种通过迭代可迭代对象来创建列表的聪明而简洁的方法。嵌套列表推导只不过是另一个列表推导中的列表推导,这与嵌套 for 循环非常相似。
让我们看一些例子来了解嵌套列表推导可以做什么:
示例 1:
我想创建一个如下所示的矩阵:
matrix = [[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]]
以下代码对给定任务使用嵌套 for 循环:
matrix = []
for i in range(5):
# Append an empty sublist inside the list
matrix.append([])
for j in range(5):
matrix[i].append(j)
print(matrix)
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [ 0、1、2、3、4]]
使用嵌套列表推导可以在一行中实现相同的输出:
# Nested list comprehension
matrix = [[j for j in range(5)] for i in range(5)]
print(matrix)
解释:
上述程序的语法如下所示:
[expression for i in range(5)] –> 表示执行此表达式并将其输出附加到列表中,直到变量 i 从 0 迭代到 4。
例如:- [i for i in range(5)] –> 在这种情况下,表达式的输出
只是变量 i 本身,因此我们将其输出附加到列表中,同时 i
从 0 迭代到 4。因此输出将是 –> [0, 1, 2, 3, 4]
但在我们的例子中,表达式本身就是一个列表推导式。因此,我们需要先
求解表达式,然后将其输出附加到列表中。expression = [j for j in range(5)] –> 这个表达式的输出与
上面讨论的示例相同。因此表达式 = [0, 1, 2, 3, 4]。
现在我们只是简单地附加这个输出,直到变量 i 从 0 迭代到 4,这将
是总共 5 次迭代。因此,最终输出将只是
上述表达式重复 5 次的输出列表。输出:[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4] , [0, 1, 2, 3, 4]]