python多维list创建(避免重复引用)

本文讲解了Python中如何创建二维和三维列表以避免引用问题,介绍了错误的引用方式导致的修改影响,并提供了正确创建多维list的示例。通过对比和解析,帮助读者理解引用深浅以及如何确保独立修改每个子列表。
摘要由CSDN通过智能技术生成

python多维list创建(避免重复引用)

二维list生成

list_a=[[] for n in range(3)]
list_a

输出:[[], [], []]

对其中一个进行修改

list_a[1]=3
list_a

输出:[[], 3, []]

这样不会改变其它位置的元素

三维list生成

错误用法

list_a=[[] for n in range(3)]
list_b=[list_a for n in range(3)]
list_b

这样表面上输出的是正确的
[[[], [], []], [[], [], []], [[], [], []]]

但是当你修改一个值时,其它相同位置的值也会被修改,像这样

list_b[1][1]=2
list_b

输出的其实是这个
[[[], 2, []], [[], 2, []], [[], 2, []]]

可以看到,并不是我们想要的修改结果,因为这种创建方式(list_b=[list_a for n in range(3)])其实是一种引用,list_b里有三个引用,都指向同一个list_a,所以当你修改其中一个时,对另外两个也会同样会变化。

正确用法

list_b=[[[] for m in range(3)] for n in range(3)]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刚开始的人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值