Python多维list初始化后续更改值会更改一列或一行

又是一个踩坑记录

>>>a=[[0,0,0]]*3
#输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> a[0][1]=1#更改值
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]#本来指向改第0行第1列 结果整个第1列的值都修改了
#这个是因为这三行都是指向了同一个一维【0,0,0】地址
>>> id(a[0])
1790120638336#第一行第二行地址一样
>>> id(a[1])
1790120638336
#换种初始化方式
>>> b=[[0,0,0] for _ in range(3)]  
>>> b
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> b[0][1]=1
>>> b
[[0, 1, 0], [0, 0, 0], [0, 0, 0]]
>>> id(b[0])
1790120870848#地址不同,开辟了新的空间
>>> id(b[1])
1790120870912
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值