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

posted on 2018-03-24 20:09  刘英皓  阅读(29037)  评论(0编辑  收藏  举报