python 深淺拷貝
阿新 • • 發佈:2017-08-16
copy 修改 創建 打印 pan alex 都是 lex 簡單
先定義一個列表
>>> s = [1,‘alex‘,‘alvin‘]
>>> s2 = s.copy() 使用copy()方法拷貝,創建一個新的對象s2
>>> print(s2) 拷貝之後s2對象和s對象的內容一樣。
[1,‘alex‘,‘alvin‘]
>>> s2[0] = 3 修改s2對象的值
>>> print(s2)
[3,‘alex‘,‘alvin‘] 打印s2,發現s2對象的值發生了變化
>>> print(s)
[1,‘alex‘,‘alvin‘] 而對應的s對象的值卻沒有發生任何變化
總結:簡單的copy拷貝,新創建的對象和被拷貝的對象之間沒有關系,兩者修改任意一個對象的值,都不會對對方產生影響。
>>> s = [[1,2],‘alex‘,‘alvin‘]
>>> s3 = s.copy() 做拷貝
>>> print(s)
[[1,2],‘alex‘,‘alvin‘]
>>> print(s3)
[[1,2],‘alex‘,‘alvin‘] 在這一步之前s和s2輸出的值都是一樣的。
>>> s3[1] = ‘linux‘ 修改s2對象的值,這裏一步s2發生變化,s不會發生變化,兩者沒有影響。
>>> print(s3)
[[1,2],‘linux‘,‘alvin‘]
>>> print(s)
[[1,2],‘alex‘,‘alvin‘]
>>> s3[0][1] = 3 這裏修改了s2列表裏面的子列表的值,打印s和s2發現兩個對象的子列表的值都發生了變化。
>>> print(s3)
[[1,3],‘linux‘,‘alvin‘]
>>> print(s)
[[1,3],‘linux‘,‘alvin‘]
python 深淺拷貝