Python数组初始化陷阱

2022-07-18  本文已影响0人  Kyrielight

比较以下两种数组初始化:

arr1 = [[0]*5]*5
arr2 = [[0 for i in range(5)] for j in range(5)]

乍看都是初始化一个5*5的二维数组,但若都执行相同的赋值语句后,结果却大不一样:

arr1[0][0] = 1 # arr1会变为[[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]]
arr2[0][0] = 1 # arr2会变为[[1,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]

下图解释了arr1的初始化和赋值的逻辑


arr1初始化 arr1赋值
上一篇 下一篇

猜你喜欢

热点阅读