一些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实现微信接口(itchat)详细介绍
Oct 23 Python
Python输出各行命令详解
Feb 01 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
python批量修改文件编码格式的方法
May 31 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
Python快速实现一键抠图功能的全过程
Jun 29 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
德生PL990的分析评价
2021/03/02 无线电
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
javascript的函数作用域
2014/11/12 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
Python 自动化表单提交实例代码
2017/06/08 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Django model select的多种用法详解
2019/07/16 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
几道Web/Ajax的面试题
2016/11/05 面试题
国际贸易专业推荐信
2013/11/15 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
毕业生找工作求职信
2014/08/05 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
百年孤独读书笔记
2015/06/29 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript