python中的浅拷贝和深拷贝
生活随笔
收集整理的這篇文章主要介紹了
python中的浅拷贝和深拷贝
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
賦值
賦值即對象的引用
original_list = [1,2,3,['a','b']] assignment_list = original_list#修改原對象的值,賦值對象也改變 original_list.append(5) print('original_list: %s\nassignment_list:%s'%(original_list,assignment_list)) #修改原對象中引用的對象的值,賦值對象也改變 original_list[3].append('c') print('original_list: %s\nassignment_list:%s'%(original_list,assignment_list)) #修改賦值對象中的值,原對象也改變 assignment_list.append(5) print('original_list: %s\nassignment_list:%s'%(original_list,assignment_list)) #修改賦值對象中引用對象的值,原對象也改變 assignment_list[3].append('c') print('original_list: %s\nassignment_list:%s'%(original_list,assignment_list))淺拷貝
“A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original. ”
淺拷貝構造一個新的復合對象,然后(盡可能)將對它的引用插入到原始對象中
即拷貝了最外圍的對象本身,內部的元素都只是拷貝了一個引用而已。也就是,把對象復制一遍,但是該對象中引用的其他對象不復制
from copy import copy,deepcopyoriginal_list = [1,2,3,['a','b']] copy_list = copy(original_list) original_list.append(5) print('original_list:%s\ncopy_list: %s'%(original_list,copy_list)) original_list[3].append('c') print('original_list:%s\ncopy_list: %s'%(original_list,copy_list)) copy_list.append(5) print('original_list:%s\ncopy_list: %s'%(original_list,copy_list)) copy_list[3].append('c') print('original_list:%s\ncopy_list: %s'%(original_list,copy_list))深拷貝
A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original
深拷貝構造一個新的復合對象,然后遞歸地將復制插入原始對象中的對象
即外圍和內部元素都進行了拷貝對象本身,而不是引用。也就是把對象復制一遍,并且該對象中引用的所有對象都復制。
?
轉載于:https://www.cnblogs.com/iamluoli/p/9385358.html
總結
以上是生活随笔為你收集整理的python中的浅拷贝和深拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python集合
- 下一篇: ES5-Array-valueOf/to