《Python 核心技术与实战》 学习笔记 Day14 Pyth

2023-01-28  本文已影响0人  _相信自己_

'==' VS 'is'

等于(==)和 is 是 Python 中对象比较常用的两种方式。简单来说,'=='操作符比较对象之间的值是否相等,比如下面的例子,表示比较变量 a 和 b 所指向的值是否相等。

a == b

而'is'操作符比较的是对象的身份标识是否相等,即它们是否是同一个对象,是否指向同一个内存地址。


a = 10
b = 10

a == b
True

id(a)
4427562448

id(b)
4427562448

a is b
True

浅拷贝和深度拷贝

常见的浅拷贝的方法,是使用数据类型本身的构造器,比如下面两个例子:


l1 = [1, 2, 3]
l2 = list(l1)

l2
[1, 2, 3]

l1 == l2
True

l1 is l2
False

s1 = set([1, 2, 3])
s2 = set(s1)

s2
{1, 2, 3}

s1 == s2
True

s1 is s2
False

所谓深度拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。


import copy
l1 = [[1, 2], (30, 40)]
l2 = copy.deepcopy(l1)
l1.append(100)
l1[0].append(3)

l1
[[1, 2, 3], (30, 40), 100]

l2 
[[1, 2], (30, 40)]

总结

上一篇 下一篇

猜你喜欢

热点阅读