python初始化list列表(1维、2维)
1.初始化递增的list:
list1 = range(10)
#print list1
#[0,1,2,...,9]
2.初始化每项为0的一维数组:
list2 = [0] * 5
#print list2
#[0,0,0,0,0]
3.初始化固定值的一维数组:
initVal = 1
listLen = 5
list3 = [ initVal for i in range(5)]
#print list3
#[1,1,1,1,1]
list4 = [initVal] * listLen
#print list4
#[1,1,1,1,1]
4.初始化一个5x6每项为0(固定值)的数组(推荐使用):
multilist = [[0 for col in range(5)] for row in range(6)]
5.初始化一个5x6每项为0(固定值)的数组
multilist = [[0] * 5 for row in range(3)]
看到了以上的方法,那初始化一个二维数组时,是否可以这样做呢:
multi = [[0] * 5] * 3
其实,这样做是不对的,因为[0] * 5是一个一维数组的对象,* 3的话只是把对象的引用复制了3次,比如,我修改multi[0][0]:
multi = [[0] * 5] * 3
multi[0][0] = 'Hello'
print multi
输出的结果将是:
[['Hello', 0, 0, 0, 0], ['Hello', 0, 0, 0, 0], ['Hello', 0, 0,0, 0]]
我们修改了multi[0][0],却把我们的multi[1][0],multi[2][0]也修改了。这不是我们想要的结果。
但是如下写法是对的:
multilist = [[0] * 5 for row in range(3)]
multilist[0][0] = 'Hello'
print multilist
我们看输出结果:
[['Hello', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
恩,没问题。但是,由于使用 * 的方法比较容易引起混淆导致Bug,所以还是推荐使用上面方法4,即:
multilist = [[0 for col in range(5)] for row in range(6)]
如果觉得这文章还算用心,请劳驾点击右下角的推荐,这是对我们这些做开源分享的最大的肯定,谢谢。
作者:zqifa
出处:https://www.cnblogs.com/zqifa/
欢迎访问新博客地址:https://www.l1mn.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
· 为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
· 面试时该如何做好自我介绍呢?附带介绍样板示例!!!
· JavaScript 编年史:探索前端界巨变的幕后推手
· 复杂业务系统线上问题排查过程
· 独立开发:高效集成大模型,看这篇就够了