一些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实现方法
Nov 18 Python
用Python代码来解图片迷宫的方法整理
Apr 02 Python
浅谈Python数据类型判断及列表脚本操作
Nov 04 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
详解Python 解压缩文件
Apr 09 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
Python request使用方法及问题总结
Apr 26 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
Python 使用dict实现switch的操作
Apr 07 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
小文件php+SQLite存储方案
2010/09/04 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
window.open的功能全解析
2006/10/10 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python数组过滤实现方法
2015/07/27 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
关于python写入文件自动换行的问题
2018/06/23 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
python不同版本的_new_不同点总结
2020/12/09 Python
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
技术支持岗位职责
2015/02/13 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
给学校的建议书400字
2015/09/14 职场文书
优质服务标语口号
2015/12/26 职场文书
POST提交数据常见的四种方式
2022/01/18 HTML / CSS