Python-运算符
1、算术运算符
print(10 + 3.1) #没有定义变量,直接输出值,下一秒就会被垃圾回收,要想不被垃圾回收,就定义变量
print(10 + 3)
print(10 / 3) #结果带小数
print(10 // 3) #值保留整数部分
print(10 % 3) #取模、取余数
print(10 ** 3) #10的3次方
2、比较运算符 >、>=、<、<=、==、!=(不等于)
print(10 > 3)
True
print(10 == 10)
True
print(10 >= 10)
True
print(10 >= 3)
True
3、赋值运算符
3.1 =:变量的赋值
3.2 +=:增量赋值
age = 18
age = age + 1 #简写age += 1
3.3 链式赋值
x=10
y=10
z=10
z=y=x=10 #上面简写
print(id(x),id(y),id(z)) #三个id相同,三个变量值的内存地址相同
3.4 交叉赋值
m=10
n=20
print(m,n)
#交换值
temp=m #将m的值重新指向到一个变量上,不然m=n内存中m的值会被垃圾回收
n=temp
print(m,n)
上面的简写:m,n=n,m
3.5 解压赋值
l=[111,222,333,444,555]
mon0,mon1,mon2,mon3,mon4=l #对应的变量名少一个不行
print(mon0,mon1,mon2,mon3,mon4)
111 222 333 444 555
x,y,z,*_=l#取前三个变量值 *代表取得列表后面变量所有的值,赋给_变量,_代表变量不能使用,是占位符
print(x,y,z)
111 222 333
*_,x,y,z=l#取后三个变量值
print(x,y,z)
333 444 555
d={'a':1,'b':2,'c':3}
x,y,z=d #解压字典默认解压出来的是字典的key
print(x,y,z)
a b c
4、逻辑运算符
not and or的基本使用
4.1 not:就是把紧跟其后的那个条件结果取反
not与紧跟其后的那个条件是一个不可分割的整体
print(16 > 13)
True
print(not 16 > 13)#16 > 13 条件判断为True,然后将条件结果True取反,就是False
False
print(not True)
False
print(not False)
True
print(not 10) #10(代表隐式布尔值的True),然后将条件结果True取反,就是False
False
print(not 0)
True
print(not None)
True
print(not '')
True
4.2 and:逻辑与,and用来连接左右两个条件,两个条件同时为True,最终结果才为真
print(True and 10 >3)
True
print(True and 10 >3 and 0)
0
4.3 or:逻辑或,or用来连接左右两个条件,两个条件但凡有一个为True,最终结果就为True
两个条件都为False的情况下,最终结果才为False
print(3 > 2 or True)
True
print(10 or False or 3 != 2)
10
4.4 短路运算:偷懒原则,偷懒到那个位置,就把当前位置的值返回
print(10 > 3 and 10)
10 #偷懒到10这个位置,就把当前位置的值返回。
#其是10是隐式布尔值,代表True
10 > 3 and 10 and 0 and 10 or 10 > 3 and 1==1
#遇到and和or同时存在,使用优先级()把and括起来
print((10 > 3 and 10 and 0 and 10) or (10 > 3 and 1==1))
True #or右边的条件为True。两个条件但凡有一个为True,最终结果就为True
4.5 not and or的优先级
优先级not>and>or
如果单独就只是一串and连接,或者单独就只是一串or连接,按照从左到有的顺序依次运算即可
如果是混用,则需要考虑优先级了
#不用括号和使用括号括起来的优先级是一样
res=3 > 4 and not 4 > 3 or 1==3 and 'x'=='x' or 3 > 3
res=(3 > 4 and (not 4 > 3)) or (1==3 and 'x'=='x') or 3 > 3
先给not带上括号(not 4 > 3),在给and带上括号(3 > 4 and (not 4 > 3)) (1==3 and 'x'=='x')
3>4是Flase 1==3是Flase
比较(3 > 4 and (not 4 > 3)) or (1==3 and 'x'=='x') or 3 > 3
Flase or Flase or 3 > 3 所以最后的结果是False
这种以后要使用括号括起来,要么剩下and要么剩下or在进行逻辑运算
res=3 > 4 and ((not 4 > 3) or 1==3) and ('x'=='x' or 3 > 3) 剩下and
res=(3 > 4 and (not 4 > 3)) or (1==3 and 'x'=='x') or 3 > 3 剩下or
5、成员运算符
5.1 in
print("llj" in "hello llj") #判断一个子字符串是否存在于一个大字符串中
True
print("l" in "hello llj") #判断一个子字符串是否存在于一个大字符串中
True
pirnt(111 in [111,222,333]) #判断元素是否在于列表
True
pirnt'k'in {"k":'llj','k1':'long','k2':'ji'} #字典判断key是否存在于字典
True
5.2 not in
print("llj" not in "hello llj") #推荐使用
False
print(not "llj" in "hello llj")#逻辑同上,但语义不明确,不推荐
False
6、身份运算符
is #比较左右两个值身份id是否相等
id:反映的是变量值的内存地址,内存地址不同id则不同
>>> name='llj'
>>> print(id(name))
139819428247904
>>> n='llj'
>>> print(id(n))
139819428247904
上面变量名name和n所对应的内存地址是相同的
>>> print(name is n)
True
>>> print(name == n)
True
所以id相同则值相同

浙公网安备 33010602011771号