Arrays 使用python列表定义二维数组
我试图用python创建一个二维数组。但是,我对初始化数组的要求感到困惑。 这个问题与 当我将列表理解用作:Arrays 使用python列表定义二维数组,arrays,python-3.x,Arrays,Python 3.x,我试图用python创建一个二维数组。但是,我对初始化数组的要求感到困惑。 这个问题与 当我将列表理解用作: out = [[ i*j for j in range (Y)] for i in range (X)] print (out) 这里我不需要初始化任何数组。然而,在第二种情况下: out = [] for i in range (X): for j in range (Y): out[i][j] = i*j 如果不首先将阵列初始化为: out = [[ 0
out = [[ i*j for j in range (Y)] for i in range (X)]
print (out)
这里我不需要初始化任何数组。然而,在第二种情况下:
out = []
for i in range (X):
for j in range (Y):
out[i][j] = i*j
如果不首先将阵列初始化为:
out = [[ 0 for j in range (Y)] for i in range (X)]
我理解在第二种情况下初始化数组的必要性,但请有人解释一下在第一种情况下它是如何工作的。列表理解是一个用一些数据初始化数组的语句,因此不需要再次初始化。在第二种情况下,您需要先初始化数组,然后再将值分配给其元素。语句
out=[]
创建一个空列表:当您尝试通过索引访问该列表中的项目时,使用out[3]=foo
,您说的是“获取out
的第三个元素并将其设置为foo
”。但是空列表中还没有第三个元素-您需要添加元素,然后为它们赋值
在这种情况下,最简单的方法是为数组指定零值,然后用i*j
的值覆盖它们:
out = [0]*X # <- initialise outer list
for i in range (X):
out[i] = [0]*Y # <- initialise each row of inner list
for j in range (Y):
out[i][j] = i*j
print(out)
out=[0]*X#