4.布尔表达式
大约 2 分钟学习笔记Python基础
浅拷贝和深拷贝
拷贝需要导入 copy
模块
提示
1、赋值:简单地拷贝对象的引用,两个对象的id 相同。
2、浅拷贝:创建一个新的组合对象,这个新对象与原对象 共享 内存中的子对象。
3、深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。
浅拷贝
浅拷贝:是指创建一个新的对象,其内容是原对象中元素的引用。(拷贝组合对象,不拷贝子对象)
方法:copy.copy()
浅拷贝 等价于 切片[:]
提示
使用浅拷贝时,子对象共用(list1 的子对象改变时,list2 的子对象也会改变)
import copy
list1 = [10, 20, 30, [40, 50]]
list2=copy.copy(list1)
print(list2) # [10, 20, 30, [40, 50]]
# 修改了list1的值,list2中的值也会跟着改变
list1[-1][0] = 60
print(list2) # [10, 20, 30, [60, 50]]
深拷贝
深拷贝:是指创建一个新的对象,递归的拷贝原对象所包含的子对象。
方法:copy.deepcopy()
深拷贝出来的对象与原对象没有任何关联。
import copy
list1 = [10, 20, 30, [40, 50]]
list2=copy.deepcopy(list1)
list1[-1][0] = 60
print(list2) # [10, 20, 30, [40, 50]]
提示
对于不可变对象,当需要一个新的对象时,python 可能会返回已经存在的某个类型和值都一致的对象的引用。
这种机制并不会影响 两个对象 的相互独立性
布尔表达式
提示
1.布尔对象只有两种取值: True 和 False
2.布尔类型 True 真,也可以用 1 表示 False 假 也可以用 0 表示
3.字母之间的比较,是根据 ASCII 码 来比较的,a=97
,A=65
比较运算符
用 ==
、!=
、>
、>=
、<
、<=
连接两个比较对象。
通过比较用算符判断表达式是否成立,成立则返回 True ,不成立则返回 False
print( 1 == 1) # True
print( 1 != 1) # False
in 和 not in
使用 in 和 not in 来判断元素是否在对象中
list1 = [10, 20, 30]
print(10 in list1) # True
print("10" not in list1) # True
逻辑运算符
使用 and 和 or 来连接多个判断语句
提示
amd、or 遵循 全真为真,一假为假 的规则。
如果有括号时,需要先判断括号内的部分。
and
,or
,not
的优先级not
>and
>or
print(1>2 and 2>1 or 3>20 and 5>4 or 6>5) # True
print(1>2 and 2>1 or 3>20 and (5>4 or 6>5)) # False