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