嵌套 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/