一些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实现的百度站长自动URL提交小工具
Jun 27 Python
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
Python的缺点和劣势分析
Nov 19 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
Python更改pip镜像源的方法示例
Dec 01 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
Python基础之数据结构详解
Apr 28 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
php身份证号码检查类实例
2015/06/18 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python with语句用法原理详解
2020/07/03 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
售后主管岗位职责
2013/12/08 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
小学数学国培研修日志
2015/11/13 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS