布尔表达式只有两种取值: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)
#结果为False,一真为真,全假为假

逻辑运算符的优先级: 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)

这样子列表和列表之间互不影响

这是因为深拷贝出现的结果是子列表和列表之间是不同的

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐