Python数组初始化陷阱

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

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赋值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容