請什麼是在Python這兩個代碼之間的區別:複製蟒蛇
white=[2,4,8,9]
black = white
和
white=[2,4,8,9]
black = white[:]
太感謝你了。
請什麼是在Python這兩個代碼之間的區別:複製蟒蛇
white=[2,4,8,9]
black = white
和
white=[2,4,8,9]
black = white[:]
太感謝你了。
第一個副本參考列表white
給變量black
所以要black
任何變化也將改變white
反之亦然
把它看成是一個別名或暱稱white
第二個將列表white
的內容複製到變量black
,也許這樣寫得更好
black = list(white)
在這種情況下有兩個變量black
和white
之間沒有連接,因爲它是white
內容被複制,而不是一個參考white
本身。
額外考慮到下面的相關評論(感謝喬恩·克萊門茨):你可以閱讀更多有關深拷貝VS這裏Understanding dict.copy() - shallow or deep?
*第二個副本的內容* - >第二個創建內容的淺拷貝。 –
淺拷貝您可以使用id()
和is
看到在Python外殼的區別:
>>> white=[2,4,8,9]
>>> black = white
>>> id(white)
41026064
>>> id(black)
41026064
>>> black is white
True
black
and white
指向相同的對象,所以它們不是兩件事,它們是一個。當您進行切片(或淺層)複製時,會創建一個新對象。
>>> white=[2,4,8,9]
>>> black = white[:]
>>> id(white)
41026064
>>> id(black)
41025904
>>> black is white
False
使用'id'的+1 – Thomas
作爲額外的數據點,Python的3.3添加copy
方法作爲可讀替代切片語法。所以white.copy()
也創建列表的淺表副本white
嘗試修改白色或黑色後副本,看看其他更改。 –
這篇文章最近已經發布,正是你要找的 - http://nedbatchelder.com/text/names.html –