Python 创建空的二维数组

标签 python arrays multidimensional-array

我试图通过使用 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 循环编写嵌套列表理解的一种正确方法是首先为每一行构建内部列表,然后将其附加grid2:

grid2 = []
for i in range(rows):
    inner = []
    for j in range(cols):
        inner.append(0)
    grid2.append(inner)

关于Python 创建空的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61007974/

相关文章:

python - 使用自定义管道进行交叉验证 scikit-learn

python - 如何使用 Python 获取系统信息?

python - python的多进程会泄漏内存吗?

c - 将特定格式的文本文件读入c中的二维数组/矩阵

javascript - 如何将另一个网页中的表格加载到数组中?

python - Django Listview - 过滤和分页

c - 我应该声明 int 数组大小吗?

c - 替代c中的多维数组

php - 如何在子数组中搜索值并了解该子数组的键索引

python - 我可以向量化这个二维数组索引,其中第二维取决于第一维的值吗?