一些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之重回函数
Oct 10 Python
Python中的with...as用法介绍
May 28 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
Python实现合并两个列表的方法分析
May 28 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
selenium+python环境配置教程详解
May 28 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python3 mmh3安装及使用方法
Oct 09 Python
如何利用pygame实现打飞机小游戏
May 30 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微信开发之查询城市天气
2016/06/23 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
python处理json数据中的中文
2014/03/06 Python
python基础知识小结之集合
2015/11/25 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
公司感谢信范文
2015/01/22 职场文书
辩护词范文大全
2015/05/21 职场文书