一尘不染

如何定义一个二维数组?

python

我想定义一个没有初始化长度的二维数组,如下所示:

Matrix = [][]

但这给出了一个错误:

IndexError:列表索引超出范围


阅读 95

收藏
2022-09-28

共1个答案

一尘不染

您在技术上试图索引一个未初始化的数组。在添加项目之前,您必须先用列表初始化外部列表;Python 将此称为“列表理解”。

# Creates a list containing 5 lists, each of 8 items, all set to 0
w, h = 8, 5
Matrix = [[0 for x in range(w)] for y in range(h)] 

#您现在可以将项目添加到列表中:

Matrix[0][0] = 1
Matrix[6][0] = 3 # error! range... 
Matrix[0][6] = 3 # valid

请注意,矩阵主要是“y”地址,换句话说,“y 索引”位于“x 索引”之前。

print Matrix[0][0] # prints 1
x, y = 0, 6 
print Matrix[x][y] # prints 3; be careful with indexing! 

尽管您可以随意命名它们,但如果您对内部和外部列表都使用“x”并且想要一个非方形矩阵,我会以这种方式查看它以避免索引可能出现的一些混淆。

2022-09-28