Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用python列表定义二维数组_Arrays_Python 3.x - Fatal编程技术网

Arrays 使用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

我试图用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 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#