一些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 相关文章推荐
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
python分析作业提交情况
Nov 22 Python
快速了解python leveldb
Jan 18 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
基于Python实现用户管理系统
Feb 26 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
python 下载文件的几种方式分享
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 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
探究python中open函数的使用
2016/03/01 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Django自定义分页效果
2017/06/27 Python
对Python中range()函数和list的比较
2018/04/19 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
优秀团员事迹材料1500字
2014/08/31 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS