一些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单元测试框架unittest简明使用实例
Apr 13 Python
简单介绍Python中的try和finally和with方法
May 05 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
python write无法写入文件的解决方法
Jan 23 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Django ORM 聚合查询和分组查询实现详解
Aug 09 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
Python 多进程、多线程效率对比
Nov 19 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 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动态创建Flash动画
2006/10/09 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
Python验证码识别的方法
2015/07/10 Python
Python实现的RSS阅读器实例
2015/07/25 Python
python字典DICT类型合并详解
2017/08/17 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
python openssl模块安装及用法
2020/12/06 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
上海期货面试题
2014/01/31 面试题
最新大学生自我评价
2013/09/24 职场文书
现场施工员岗位职责
2014/03/10 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
趣味运动会广播稿
2015/08/19 职场文书
单位提档介绍信
2015/10/22 职场文书
导游词之江南周庄
2019/12/06 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python