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

标签 python list matrix

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

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

我明白了:

x = [[0 for i in range(row)] for j in range(col)]

其中 row 定义为矩阵中的行数,col 定义为矩阵中的列数。在这种情况下,行 = 2 和列 = 2。

当我们打印 x 时:

print(x)

我们会得到:

[[0, 0], [0, 0]]

这就是我们想要的。

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

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

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

最佳答案

这只是一个捷径:

x = []
for j in range(column):
    _ = []
    for i in range(row):
        _.append(i)
    x.append(_)

你可以把里面的for通过说列表由一大堆 0 组成来循环到一个的。我们为每个 i 这样做在 range(row) , 所以我们可以说 _ = [0 for i in range(row)] .这是它的样子:

x = []
for j in range(column):
    x.append([0 for i in range(row)])

我们现在可以看到 x由一堆 [0 for i in range(row)] 组成的,我们为每个 j 做一次在 range(column) ,所以我们可以将其简化为:

x = [[0 for i in range(row)] for j in range(column)]

关于python - 了解使用嵌套循环创建二维列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437028/

相关文章:

c++ - 矩阵迭代的逐位移位?

python - 让 virtualenv 共享已经存在的站点包?

python - 在 python 中填充列表

c++ - 理解旋转 N x N 矩阵的逻辑

python - 在字典列表中复制字典对(键,值)并尊重顺序的有效方法

python - 使用Python,反转一个整数,并判断是否回文

c++ - DirectX 3D 围绕 lookAt 旋转 eyePt

python -\n 在每行的末尾追加

python - 如何将 SQLAlchemy 与类属性(和属性)一起使用?

python - 步骤的附件存储在 VSTS REST API 中的什么位置?