我试图通过使用for循环生成一个空的二维数组。我发现一种有效的方法,它看起来像这样:
rows = 5
cols = 5
grid1 = []
grid1 = [[0 for i in range(cols)] for j in range(rows)]
print(grid1)
输出:
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
但是,当我尝试以“常规”语法编写for循环时,会引发错误。为什么我不能用普通语法编写它?
rows = 5
cols = 5
grid2 = []
for i in range(rows):
for j in range(cols):
grid2[i][j] = 0
print(grid2)
输出:
Exception has occurred: IndexError
list index out of range
File "C:\Users\Bruker\Downloads\test.py", line 8, in <module>
grid2[i][j] = 0
IndexError
之所以得到,是因为您无法在列表的当前长度之外分配给列表中的索引。由于grid2
已初始化为空列表,因此尝试对其进行索引都会引发此错误。
使用for循环编写嵌套列表理解的一种正确方法是,首先为每一行构造内部列表,然后将其构建append
为grid2
:
grid2 = []
for i in range(rows):
inner = []
for j in range(cols):
inner.append(0)
grid2.append(inner)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句