了解使用嵌套循环创建二维列表

nva*_*ars 4 python list matrix

嵌套 for 循环(在本例中为双 for 循环)如何创建 2D 列表。

例如,我想要一个 2x2 矩阵,每个元素都用 0 进行初始化。

我懂了:

x = [[0 for i in range(row)] for j in range(col)]
Run Code Online (Sandbox Code Playgroud)

其中 row 定义为矩阵中的行数,col 定义为矩阵中的列数。在本例中,行 = 2,列 = 2。

当我们打印 x 时:

print(x)
Run Code Online (Sandbox Code Playgroud)

我们将得到:

[[0, 0], [0, 0]]
Run Code Online (Sandbox Code Playgroud)

这就是我们想要的。

这背后的逻辑是什么?是[0 for i in range(row)]说,对于指定行号范围内的每个元素,我们将分配一个 0 来有效地创建矩阵中的第一行?

那么for j in range(col)是不是说我们根据指定的列号重复创建这个列表,以有效地创建更多的行,这些行最终成为列?

我应该如何从左到右阅读这段代码片段?

zon*_*ndo 5

这只是一个捷径:

x = []
for j in range(column):
    _ = []
    for i in range(row):
        _.append(i)
    x.append(_)
Run Code Online (Sandbox Code Playgroud)

您可以通过说列表由一整堆'for组成来将内部循环放入一个循环中。0我们对每个iin 都这样做range(row),所以我们可以说_ = [0 for i in range(row)]。看起来是这样的:

x = []
for j in range(column):
    x.append([0 for i in range(row)])
Run Code Online (Sandbox Code Playgroud)

我们现在可以看到它x由一堆 组成[0 for i in range(row)],并且我们对每个jin执行一次range(column),因此我们可以将其简化为:

x = [[0 for i in range(row)] for j in range(column)]
Run Code Online (Sandbox Code Playgroud)