当前位置: 首页 > news >正文

初始化一个列表python

1.初始化递增的list:
list1 = list(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.初始化一个5x3每项为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)]

http://www.lryc.cn/news/9237.html

相关文章:

  • 【electron】webview嵌入页面发送消息给父级页面
  • Whids:一款针对Windows操作系统的开源EDR
  • 初级调色转档CameraRaw
  • Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存
  • 成为 Seatunnel 源码贡献者保姆级教程
  • MySQL的索引视图练习题
  • 【C++ Primer Plus】第四章:复合类型
  • 做外贸,你不能不懂的外贸流程知识
  • 日本机载激光雷达测深进展(一)日本启动测量90%沿岸水深项目
  • MySQL数据库调优————创建索引的原则和索引失效及解决方案
  • 设计师都在看的全球设计网站,你居然还不知道!
  • c++:缺省参数,函数重载
  • 深度学习算法面试常问问题(二)
  • 美国CPC认证是什么?儿童玩具亚马逊CPC认证审核有哪些问题?
  • 恭喜! SelectDB 五位开发者成为 Apache Doris 新晋 PMC 成员和 Committer!
  • 数据库面试题
  • [USACO2022-DEC-Bronze] T2 Feeding the Cows 题解
  • Unity法线贴图原理理解(为什么存在切线空间?存的值是什么?)
  • 【JavaWeb】传输层协议——UDP + TCP
  • C++ 中是用来修饰:内置类型变量、自定义对象、成员函数、返回值、函数参数
  • av 146 002
  • 小红书用户画像 | 小红书数据平台
  • 【STM32笔记】低功耗模式下GPIO、外设、时钟省电配置避坑
  • Linux内存分区(swap)
  • 第六章——抽样分布
  • 蓝桥云课-声网编程赛(声网编程竞赛7月专场)题解
  • Java高手速成 | Java web 实训之投票系统
  • 排序的基本概念
  • 面试笔试资料--Java
  • 基于TC377的MACL-ADC General配置解读