python二维数组单个元素赋值

当你用如下方法创建一个python二维数组时

memo = [[1] * 3] * 4

于是你得到

memo = [ [1, 1 ,1],
		 [1, 1 ,1],
		 [1, 1 ,1],
		 [1, 1 ,1]

> 这里是引用

		 ]

当你修改memo当个元素时

memo[2,1] = 0

你会发现memo整列数字都变换了

memo = [[1,0,1,1],
	    [1,0,1,1],
	    [1,0,1,1],
	    [1,0,1,1]
	    ]

有一篇文章说

这是因为 [[0]*5]*5 表示的是指向 [0]*5 这个列表的引用,所以当你修改某一个值时,整个列表都会被改变
https://blog.csdn.net/zzc15806/article/details/82629406

大概意思是指这样子初始化的二维数组的引用不同,需要修改二维数组初始化,可以用**print(id())**来验证他们的引用地址
解决方法:列表生成法

test = [[0] * n for _ in range(m)]
详细地址:https://blog.csdn.net/qq_1290259791/article/details/81009164
    原文作者:lalapanda
    原文地址: https://blog.csdn.net/qq_38785599/article/details/123910222
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞