一些Python中的二维数组的操作方法


Posted in Python onMay 02, 2015

需要在程序中使用二维数组,网上找到一种这样的用法:
 

#创建一个宽度为3,高度为4的数组
#[[0,0,0], 
# [0,0,0],
# [0,0,0],
# [0,0,0]]
myList = [[0] * 3] * 4

但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成

[[0,1,0],

[0,1,0],

[0,1,0],

[0,1,0]]

为什么...一时搞不懂,后面翻阅The Python Standard Library 找到答案

list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接

例:
 

>>> lists = [[]] * 3
>>> lists
[[], [], []]
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]]

[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何

一个元素都会改变整个列表:

所以需要用另外一种方式进行创建多维数组,以免浅拷贝:
 

>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]

之前的二维数组创建方式为:
 

myList = [([0] * 3) for i in range(4)]
Python 相关文章推荐
Python实现栈的方法
May 26 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
Sanic框架安装与简单入门示例
Jul 16 Python
浅析python的Lambda表达式
Feb 27 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
Python函数装饰器原理与用法详解
Aug 16 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
Django之腾讯云短信的实现
Jun 12 Python
Python利用命名空间解析XML文档
Aug 10 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 #Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 #Python
Python编程中运用闭包时所需要注意的一些地方
May 02 #Python
按日期打印Python的Tornado框架中的日志的方法
May 02 #Python
详细解读Python的web.py框架下的application.py模块
May 02 #Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 #Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 #Python
You might like
php若干单维数组遍历方法的比较
2011/09/20 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
js判断浏览器的比较全的代码
2007/02/13 Javascript
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
Python中subprocess的简单使用示例
2015/07/28 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
python 字典访问的三种方法小结
2019/12/05 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
《凡卡》教学反思
2014/04/09 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
开平碉楼导游词
2015/02/06 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js