我想定义一个没有初始化长度的二维数组,如下所示:
Matrix = [][]
但这给出了一个错误:
IndexError:列表索引超出范围
您在技术上试图索引一个未初始化的数组。在添加项目之前,您必须先用列表初始化外部列表;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”并且想要一个非方形矩阵,我会以这种方式查看它以避免索引可能出现的一些混淆。