一些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 相关文章推荐
python3中str(字符串)的使用教程
Mar 23 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
Python实现的质因式分解算法示例
May 03 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
python conda操作方法
Sep 11 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
python构造IP报文实例
May 05 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
Python3爬虫中pyspider的安装步骤
Jul 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
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
详解Python的Django框架中的templates设置
2015/05/11 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
python 实现绘制整齐的表格
2019/11/18 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
新郎父亲婚宴答谢词
2014/01/11 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
中学清明节活动总结
2014/07/04 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
消防隐患整改通知书
2015/04/22 职场文书
Python编写nmap扫描工具
2021/07/21 Python