1、算数运算符(加减乘除 一般是用于数字)
+ 字符串+字符串 列表+列表 字典+字典 / 除 // 地板除,只取整数部分(不会进行四舍五入) % 相除取余 ** 取幂 print(10/3) print(10//3) print(10 % 3) # 10 的三次方
2、比较运算符
== != (了解 大于小于 的其他用处) 字符串也可比较大小(逐一比较每个字符的ASCII码值) 列表也可按照位置 逐一比较大小
3、赋值运算符
(1) = 增量 age = 18 age += 3 # age = age + 3 print(age) year = 20 year -= 3 print(year) (2)链式赋值 x=y=z=10 print(x,y,z) print(id(x),id(y),id(z)) (3)交叉赋值 一般思路 m=10 n=2 print(m,n) temp = m m=n n=temp print(m,n) 交叉赋值,一句搞定 m,n = n,m m=10 n=2 m,n = n,m print(m,n) (4) 解压赋值 一个包,里面有很多个值-----列表,字典,字符串 字符串、字典、元组、集合类型都支持解压赋值 常规取值方式---列表 money = [11,22,33,44,55] res1 = money[0] res2 = money[1] res3 = money[2] res4 = money[3] res5 = money[4] -列表解压取值 money = [11,22,33,44,55] --取全部的值(变量名的个数需要与“压缩包”里的值的个数一致,不能多也不能少) res1,res2,res3,res4,res5 = money --取前两个值 将其余不需要的值 赋值给—— _ (接收一个想要废弃的变量) *_ (接收多个想要废弃的变量) res1,res2,*_ = money --取后两个值 *_,res4,res5 = money --取前一个和最后一个值 res1,*_,res5 = money -字典解压取值 dic = {'name':'cc','age':18,'hobby':'reading'} x1,x2,x3 = dic # 获取字典的key, print(dic[x1],dic[x2],dic[x3]) # 利用字典的key,取出字典里对应的值
4、逻辑运算符号
能辨出真假的两个量 之间进行比较,判断真假 not and or --布尔值 --显式布尔值 —— 一眼辨真假 比较运算 True False (1)比较运算的结果 print(10 > 3) print(10 == 3) (2)变量值直接就是True或False tag = True --隐式布尔值 —— 表面上看上去是一种值,在底层会被解释器转换成True或False 0、None、空对应的布尔值为False,其余值对应的布尔值均为True --三大逻辑运算符——用于连接多个条件; not and or --not 条件 --对 条件 进行 取反 --条件1 and 条件2 --and 连接左右两个条件,必须左右都为True,结果才为真。一假则假,真真才真 --条件1 or 条件2 -- or 连接左右两个条件,必须左右都为False,结果才为假。假假才假,一真则真 --优先级 not > and > or 开发过程中,常用括号来划分优先级(可以打破 not > and > or 的优先级(括号的优先级更高))。 如果没有括号,也可以自己加括号,先以and为单位,将and左右的条件,一并括起来,然后按照 not > and > or 的优先级开始逻辑运算,同时使用 短路运算 (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割 (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可 (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算 --短路运算(偷懒原则) 逻辑运算的结果一旦可以确定,那么就以当前处 计算到的值作为最终结果返回 (在判断or左右的条件时,如果全真取真(或者全假取假),就近原则取值) eg: 1\ >>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4 我们用括号来明确一下优先级 >>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4 短路: 0 '' 'abc' 假 假 真 返回: 'abc' 2\ print(1 or 3 and 4) print(1 and 0 or 0 and 3) print(0 and 3 and 1) print(1 and 2 or 1) print(-31 and 2 or 1 or 4) print(33 or False and 1 or 5) 输出结果: 1 0 0 2 2 33
5、成员运算符
in not in >>> not 'lili' in ['jack','tom','robin'] True # 推荐使用第二种 >>> 'lili' not in ['jack','tom','robin'] True
6、身份运算符
# 比较 id is is not # ==双等号比较的是value是否相等,而is比较的是id是否相等 #1. id相同,内存地址必定相同,意味着type和value必定相同 #2. value相同type肯定相同,但id可能不同,如下 >>> x='Info Tony:18' >>> y='Info Tony:18' >>> id(x),id(y) # x与y的id不同,但是二者的值相同 (4327422640, 4327422256) >>> x == y # 等号比较的是value True >>> type(x),type(y) # 值相同type肯定相同 (<class 'str'>, <class 'str'>) >>> x is y # is比较的是id,x与y的值相等但id可以不同 False
参考:
https://zhuanlan.zhihu.com/p/108684774