一些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 20 Python
简单谈谈Python中的json与pickle
Jul 19 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
python实现桌面壁纸切换功能
Jan 21 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
python基础之爬虫入门
May 10 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
PHP Memcached应用实现代码
2010/02/08 PHP
php实现可运算的验证码
2015/11/10 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
js实现3D照片墙效果
2019/10/28 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python+opencv实现动态物体识别
2018/01/09 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
python的setattr函数实例用法
2020/12/16 Python
记者岗位职责
2014/01/06 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
初中团委工作总结
2015/08/13 职场文书
初中语文教学反思范文
2016/03/03 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
vue 自定义组件添加原生事件
2022/04/21 Vue.js