python创建多维列表
By francis_hao Mar 24,2018
"*"操作符可以用于列表,表示将列表内容重复n次。如下,

但是当列表内容是列表的时候就出问题了,如果我只是修改多维列表中的一项,结果是所有的都改变了,如下

这是因为,"*"操作符相当于"浅复制"的概念。只复制了一个"指针"过去,如下

这个时候如果修改复制后的内容,其结果就取决于复制的内容是什么了,如果是一个独立的对象,那修改不会造成其他影响

但是,如果复制的内容是一个复合的对象,而修改仅仅是修改了复合对象里的内容,那么所有复制的复合对象内容都会被改变,如下图

那么,怎么实现类似"深复制"的操作呢?官方FAQ里提供了答案,就是用新创建的列表为每个复制的对象赋值。

一种更简便的写法:

这里把[None]*2看成是一个整体,for是基于它的操作。

本文由 刘英皓 创作,采用 知识共享署名-非商业性使用-相同方式共享3.0中国大陆许可协议 进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/8641236.html
参考
【1】faq-multidimensional-list https://docs.python.org/3/faq/programming.html#faq-multidimensional-list
python创建多维列表的更多相关文章
- Python创建二维列表的正确姿势
Python创建二维列表的正确姿势 简介 Python中没有数组,使用list结构代替,并且list结构的功能更加强大: 支持动态扩容,无需担心元素过量 对list内的元素类型不做一致性约束 提供丰富 ...
- Python创建二维数组(关于list的一个小坑)
0.目录 1.遇到的问题 2.创建二维数组的办法 3.1 直接创建法 3.2 列表生成式法 3.3 使用模块numpy创建 1.遇到的问题 今天写Python代码的时候遇到了一个大坑,差点就耽误我交作 ...
- python构造二维列表以及排序字典
1. 构造二维列表: 比如我现在需要一个100*100的二维列表: a = [] for i in range(100): a.append([]) for j in range(100): a[i] ...
- python创建多维字典方法
python不直接创建多维字典,需要逐层判断不存在创建,存在追加: 例如: 不能直接 dictName['key1']['key2']['key3']['key4']['key5'] = ['123' ...
- python保存二维列表到txt文件,读取txt文件里面的数据转化为二维列表
源码: # 读文件里面的数据转化为二维列表 def Read_list(filename): file1 = open(filename+".txt", "r" ...
- python 创建二维数组
myList = [([0] * 3) for i in range(4)] myList[0][1] = 1 myList[1].append(2) print myList /usr/bin/py ...
- python 创建二维数组的方法
废话不多说,直接上代码: #coding=utf-8 def two_di_demo1(): a=[] for i in range(10): a.append([]) for j in range( ...
- python 按多维列表中的某一个元素位进行排序
import os,re top = os.popen("tasklist") process_list = [] split_r = r"\s+" memor ...
- python 建立多维列表
今天用到在网上没有找到合适的思路,于是自己动手写了一个,作为记录. dpa = [] dpb = [] dpc = [] for i in range(21): dpa.append(0) for i ...
随机推荐
- Eclipse用java.util.Scanner时出现Resource leak: 'in' is never closed
Resource leak: 'in' is never closed : 直译为资源泄漏,‘in’一直没被关闭. 由于声明了数据输入扫描仪(Scanner in),从而获得了配置内存,但是结束时却没 ...
- lintcode-391-数飞机
391-数飞机 给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机? 注意事项 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权. 样例 对于每架 ...
- Java compiler level does not match the version of the installed Java project facet. map解决方法
右键项目"Properties",在弹出的"Properties"窗口左侧,单击"Project Facets",打开"Proje ...
- [2017BUAA软工]第二次博客作业:代码复审
〇.comment链接 https://github.com/hanayashiki/Sudoku/issues/1 一.代码复审 1.概要部分 (1)代码能符合需求和规格说明么? 经测试,对于合法输 ...
- 软工网络15团队作业4-DAY6
每日例会 昨天的工作. 张陈东芳:sql语句查询商品信息 吴敏烽:商品类的规范化编写 周汉麟:界面的排版优化 林振斌:商品类排序的实现 李智:研究商品信息的显示 全体人员:初次统一调试 今天计划的工作 ...
- inux下mysql的root密码忘记解决方法
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
- 2nd 词频统计效能测试
词频统计效能测试 使用性能分析工具分析结果如下 :
- CKeditor、CKFinder的安装配置
CKEditor是不集成文件上传与管理功能的,文件上传管理功能被集成在CKFinder中,这是一个收费的商业软件. 如需要文件上传与管理功能建议使用FCKeditor或者手动破解CKFinder. 下 ...
- artdialog对话框 三种样式 网址:http://www.planeart.cn/demo/artDialog/_doc/labs.html
摇头效果 类似与wordpress登录失败后登录框可爱的左右晃动效果 // 2011-07-17 更新 artDialog.fn.shake = function (){ var style = th ...
- App流量测试--使用安卓自身提供的TCP收发长度统计功能
在Linux系统有3个地方保存流量统计文件,对于Android系统同样也适用: (1)在/proc/net/dev下可以查看各个网络接口的收发流量 (等同adb shell cat /proc/pi ...