2018lzn

Python第七天

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] 也是一样的, 因为他们就是同一个列表,




   

  

 

posted on 2018-08-10 16:53  2018lzn  阅读(94)  评论(0编辑  收藏  举报

导航