python 二维列表 替换元素

记录一个小方法
在使用列表的浅拷贝:
[[0]*n]*m或
[[i for i in range(n)]]*m,时
python二维列表在替换时会出现下面的问题

z=[[0]*3]*3
z[0][0]=1
print(z)
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]

本来是想替换第一个元素的,结果每一行的第一个元素都被替换了
解决方法:

z=[[0]*3]*3
a=z[0].copy()
a[0]=1
z[0]=a
print(z)
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

既然二维列表不能直接换,那么就转成一维列表

但是为了方便,在初始化列表时,使用深拷贝

list=[]
for i in range(4):
	list.append([0]*3)

可以直接使用list[0][0]=1,不需要再用一维列表了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值