布尔表达式只有两种取值:True/False
一、布尔表达式中的等号
1、布尔表达式中一个等号代表赋值,两个等号代表判断相等
print(1==2)
#结果为False
print(1==1)
#结果为True
print('a' == 'A')
#结果为False,字符之间的比较一般比较的是字符的ASCII码值
print('aA' == 'Aa')
#结果为False,字符串之间比较时,之比较第一位,如果第一位相同则继续比较,第一位不同直接返回ifalse
print('a' >= 'A')
#结果为True
布尔表达式中的True和False可以参与算术运算,True相当于1False相当于0
print(True+True)
#结果为2
2、布尔表达式中的in和not in
list = [10,20,[30,40,50]]
print(10 in list)#10在列表中
#结果为True
print(30 in list)#30在列表中
#结果为False,因为30在列表的子列表中
print(30 not in list)#30在列表中
#结果为True,因为30在列表的子列表中
print(30 in list[-1])#可以加上列表的下标
#结果为True
二、布尔表达式中的逻辑运算符(and,or)
print(1<2 and 2<1)
#结果为False,一假为假,全真为真
print(2<1 or 2>3 or 9>10)
#结果为True,一真为真,全假为假
逻辑运算符的优先级: not>and>or
print(3>2 and 2>3 and 7>5 or 1>0)
#结果为True
print(3>2 and 2>3 and (7>5 or 1>0))
#结果为False
三、返回值为布尔表达式的函数
判断某个实例是否属于某个类
函数原型:isinstance(判断的数,类型)
如下:
print(isinstance(12,int))#判断12是否属于int型
#结果为True
四、深拷贝和浅拷贝的区别
1、简单赋值
list1=[10,20,30,[40,50]]
list2=list1 #简单的赋值
list1[0]=98
print(list1)
print(list2)
这样我们得到的结果就是,list1和list2的值是相等的‘
这是因为在列表中,这个只是简单的赋值,两者只是变量名的不同,但是指向的却是同一个列表。列表和字符串不同它是有一个固定的位置的。所以list1和list2指向的都是一个列表。所以无论增怎样改list1的值最后出来的结果都是一样的。
那么如何使得这两者的值不同呢?
在没学习深拷贝和浅拷贝的时候,我们利用的是切片
list1=[10,20,30,[40,50]]
list2=list1[:] #list2等于list1的切片,切片也就相当于浅拷贝
list1[0]=98
print(list1)
print(list2)
这样我们就可以只修改list2的值,不修改list1的值,得到的结果如下所示
2、浅拷贝
list1=[10,20,30,[40,50]]
#list2=list1[:] #list2等于list1的切片,切片也就相当于浅拷贝
import copy
list2=copy.copy(list1)#浅拷贝
list1[-1][0]=666
print(list1)
print(list2)
这样得到的结果是list1和list2的值是相同的
这是因为浅拷贝或者切片,列表是两个不同的列表,但是子列表指向的还是同一个地址
3、深拷贝
列表和子列表之间都可以互不影响
list1=[10,20,30,[40,50]]
import copy
list2=copy.deepcopy(list1)#深拷贝
list1[-1][0]=666
print(list1)
print(list2)
这样子列表和列表之间互不影响
这是因为深拷贝出现的结果是子列表和列表之间是不同的