python 二维数组(二维list)创建的坑

本文深入探讨了Python中创建二维数组(二维list)的常见误区与正确实践。通过对比错误和正确的创建方式,揭示了matrix=[array]*3操作背后的原理,即只创建了多个指向同一数组的引用,导致修改一处影响全局的问题。并介绍了使用列表推导式和numpy模块的替代方案,确保每个子列表独立,避免连锁修改效应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 二维数组(二维list)创建的坑

快速创建一维度list ,并修改

>>> l=[0]*3
>>> l
[0, 0, 0]
>>> l[0]=1
>>> l
[1, 0, 0]
>>> 

快速创建二维度list ,并修改(有坑)

错误的创建

>>> l=[[0]*2]*3
>>> l
[[0, 0], [0, 0], [0, 0]]
>>> l[0][0]=1
>>> l
[[1, 0], [1, 0], [1, 0]]
#简单说下原因 matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。 

上述错误详细原因

正确的创建

>>> l=[ [0]*2 for i in range(3) ] 
>>> l
[[0, 0], [0, 0], [0, 0]]
>>> l[0][0]=1
>>> l
[[1, 0], [0, 0], [0, 0]]
>>> 
另一 种创建(使用模块numpy创建)
import numpy as np
test = np.zeros((m, n), dtype=np.int)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值