一些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元组操作实例解析
Sep 23 Python
基于python实现微信模板消息
Dec 21 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
Python 查看文件的编码格式方法
Dec 21 Python
python PyTorch预训练示例
Feb 11 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
Python实现定时监测网站运行状态的示例代码
Sep 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
PHP 多进程 解决难题
2009/06/22 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
JavaScript类库D
2010/10/24 Javascript
brook javascript框架介绍
2011/10/10 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Django中Model的使用方法教程
2018/03/07 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
三八节主持词
2014/03/17 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
教代会开幕词
2015/01/28 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Pandas自定义选项option设置
2021/07/25 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python