为什么索引值会发生变化?

时间:2021-08-01 20:58:49

标签: python arrays loops

这是我的代码。

import numpy as np

m = 2
n = 2

arr = [[0]*m]*n

for i in np.arange(n):
    for j in np.arange(m):
        print(i)
        arr[i][j] = i

print(arr)

输出为:

0
0
1
1
[[1,1],[1,1]]

我不明白为什么输出数组不是 [[0,0],[1,1]]。 拜托我疯了。

1 个答案:

答案 0 :(得分:2)

因为 [0]*m 对象被重复了 n 次。无论您的 i 是什么,您都在更改同一个对象,因此您只能看到打印的最后一个更改。

arr = [[0]*m for _ in range(n)] 解决问题