赋值,深拷贝与浅拷贝

赋值:

a = 20
b = a
print(a,id(a)) # 赋值,完全复制,内存地址一样,如果原来的改变,后面的也会跟着变
<<<<20 140728211236080
print(b,id(b))
<<<<20 140728211236080

浅拷贝: 可以用copy()或[:]

li = [1,2,3,[6,7,8]]
c = li.copy()  # 浅拷贝,可以理解为只拷贝表面一层列表,里面的列表没拷贝,如果原来的里面的列表改变了,拷贝的会跟着变
li[0]=4   
li[3][0]=9
print(li)
<<<<[4, 2, 3, [9, 7, 8]]   
print(c)
<<<<[1, 2, 3, [9, 7, 8]]

深拷贝:import copy 引入模块后,copy.deepcopy()

li = [1,2,3,[6,7,8]]
import copy
a = copy.deepcopy(li)  # 深拷贝,可以理解为把原件的全部复制了一边,跟原本的没有一点关系,如果原件改了,拷贝的是不会变的
li[0]=4
li[3][0]=9
print(li)
<<<<[4, 2, 3, [9, 7, 8]]
print(a)
<<<<[1, 2, 3, [6, 7, 8]]

猜你喜欢

转载自www.cnblogs.com/whileke/p/11305392.html