为什么Python中没有使用*运算符正确初始化多维数组?

时间:2018-01-05 15:50:38

标签: python arrays initialization

我正在尝试在Python中初始化多维数组:

SIZE=3

onedimarray=[None]*SIZE

for i in range(0,SIZE):
    onedimarray[i]="{0:d}".format(i)

print(onedimarray)

multdimarray=[[None]*SIZE]*SIZE

for i in range(0,SIZE):
    for j in range(0,SIZE):
        multdimarray[i][j]="{0:d},{1:d}".format(i,j)

print(multdimarray)

此代码运行时打印:

['0', '1', '2']
[['2,0', '2,1', '2,2'], ['2,0', '2,1', '2,2'], ['2,0', '2,1', '2,2']]

因此在一维情况下,*运算符正确初始化了数组。在多维情况下,阵列的每一行都是相同的。

我是Python的新手,并不理解这种行为。谁能解释一下发生了什么?

0 个答案:

没有答案