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