1. 先看看赋值运算
l1 = [1, 2, 3]
l2 = l1
打印 l1 和 l2 指向的内存地址
print(id(l1))
print(id(l2))
也可以用 is 判断 l1 和 l2 是否是指向同一个内存地址
print( l1 is l2) True
从打印结果上来看, l1 和 l2 是相同的
对 l2 进行添加操作
l2.append(4)
打印 l1 结果 是 [1, 2, 3, 4]
注意: 赋值运算不是 copy 操作,
不管赋值给多少个变量, 这些变量都是指向同一个内存地址
2. 深copy
引入模块 copy
import copy
l1 = [1, 2, 3, ['a', 'b']]
l2 = copy.deepcopy(l1)
print(l2)
深copy ,就是 把所有的值都copy出来, 给另一个变量,
两个变量之间,除了数值相同外, 其他都不一样,
对其中一个变量的更改,不会影响到另一个变量
3. 浅copy
和深copy对应的就是 浅copy
l1 = [1, 2, 3, ['a', 'b']]
l2 = l1.copy()
print(l1 is l2) False
print(l1[-1] is l2[-1]) True
浅copy时,变量第一层内存数据地址是不相同的,
但是第第二层之后的所有数据,都是指向同一个内存地址.
l2[-1]是列表, 对其进行 增 删,改操作
l1[-1] 也是一样的, 因为他们就是同一个列表,