python的运算符总结

python运算符

在python中,单个常亮或变量可以看做最简单的表达式,使用除赋值运算符之外的其他任意运算符和函数调用连接的式子也属于表达式。

运算符 功能说明
+ 加法,列表、元组、字符串合并与连接,正号
- 减发,集合差集,相反数
* 乘法,序列重复
/
// 求整商,若操作数中有实数,其结果为实数形式的整数
% 求余数,字符串格式化
** 幂运算
<、<=、>、>=、==、!= 值大小比较,集合的包含关系比较
or 逻辑或
and 逻辑与
not 逻辑非
in 成员测试
is 对象同一性测试,即测试是否为同一个对象或内存地址是否相同
竖线、^、&、<<、>>、~ 位或,位异或,位与,左移位,右移位,位求反
&、^、竖线 集合交集、对称差集、并集(因为Markdown里的表格输入是竖线,这里我用文字代表示替避免页面错误)
@ 矩阵相乘运算符

运算符的优先级遵循规则为:

算术运算符 > 位运算符 > 成员测试运算符 > 关系运算符 > 逻辑运算符
算术运算符遵循“先乘除,后加减”的基本运算原则,虽然python运算符有一套严格的优先级规则,但是强烈建议在编写复杂表达式时使用圆括号来明确说明其中的逻辑来提高代码可读性。

由低至高顺序:

逻辑或运算符: or
逻辑与运算符: and
逻辑非运算符: not
成员测试运算符: in, not in
身份测试运算符: is, is not
关系运算符: < , <= , > , >= , ! = , ==
按位或: |
按位异或: ^
按位与: &
移位 : << ,>>
加法与减法: + ,-
乘法、除法与取余 : *, / ,%

一、算术运算符

(1)+ 运算符出了用于算术加法意外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象直接相加或连接
①>>> [1,2,3]+[4,5,6] ——> [1, 2, 3, 4, 5, 6] #连接两个列表
②>>> (1,2,3,4)+(5,) ——> (1, 2, 3, 4, 5) #连接两个元组
③>>> ‘abcd’+‘123’ ——> ‘abcd123’ #连接两个字符串
④>>> ‘A’ + 1 ——> TypeError: must be str, not int #不支持字符与数字相加,抛出异常
⑤>>> True + 3 ——> 4 #python内部把true当做1处理
⑥>>> False + 3 —— > 3 #把false当做0处理

(2) * 运算符 出了表示算术乘法,还可用于列表、元组、字符串这几个序列,类型与整数的乘法,表示序列元素的重复,生成行的序列对象。字典和集合不支持与整数的相乘,因为其中的元素时不允许重复的。
①>>> True * 3 ——> 3
②>>> False * 3 ——> 0
③>>> [1,2,3] * 3 ——> [1, 2, 3, 1, 2, 3, 1, 2, 3]
④>>> (1,2,3) * 3 ——> (1, 2, 3, 1, 2, 3, 1, 2, 3)
⑤>>> ‘abc’ * 3 ——> ‘abcabcabc’

(3)/ 和 // 运算符在python中分别表示算术触发和算术求整商
①>>> 3/2 ——> 1.5 #数学意义上的除法
②>>> 15//4 ——>3 #如果两个操作数都是整数,结果为整数
③>>> 15.0//4 ——> 3.0 #如果操作数中有实数,结果为实数形式的整数值
④>>> -15//4 ——> -4 #向下取整

(4)%运算符可以用于整数或实数的求余数运算,还可以用于字符串格式化。
①>>> 789%23 ——> 7 #取余数
②>>> 123.45%3.2 ——> 1.849999999999996 #可以对实数进行余数运算,还有精度问题
③>>> ‘%c,%d’%(65,65) ——> ‘A,65’ #把65分别格式化为字符和整数
④>>> ‘%f,%s’%(65,65) ——> ‘65.000000,65’ #把65分别格式化为实数和字符串

(5)运算符 表示幂乘
①>>> 3
2——> 9 #3的2次方,等价于pow(3,2)
②>>> pow(3,2,8)——> 1 #等价于(3**2)%8
③>>> 9 ** 0.5——> 3.0 #9的0.5次方,平方根
④>>> (-9)**0.5——> (1.8369701987210297e-16+3j) #可以计算复数的平方根

二、关系运算符

关系运算符可以连用,前提是操作数之间必须可比较大小
①>>> 1<3<5 ——> True #等价于1<3 and 3<5
②>>> 3<5>2 ——> True
③>>> 1>6<8——> False
④>>> 1>6 False #具有惰性求职或者逻辑短路的特点
⑤>>> 1<6 NameError: name ‘math’ is not defined #还没有导入math模块,抛出异常
⑥>>> import math
>>> 1<6 False
python的运算符总结_第1张图片

三、成员测试运算符

成员测试运算符 in 用于成员测试,即测试一个对象是否为另一个对象的元素
python的运算符总结_第2张图片

四、集合运算符

集合的交集、并集、对称差集等运算借助 & , | , ^ 来实现,而差集则使用建好运算符实现,并集运算符并不是加号
python的运算符总结_第3张图片

五、逻辑运算符

  • python的逻辑运算符有 not 、 and 、or
  • 优先级:() > not > and > or
  • 运算规则:
    ① not 运算是非运算(取反),它是一个单目运算符,把True变成False,False变成True
    ②and运算是与运算,只有所有都为True,and运算的结果才是True(有一假即为假)
    ③运算符and和or并不一定会返回True或False,而是得到最后一个被计算的表达式的值,但是运算符not,一定会返回True或False
    python的运算符总结_第4张图片
    ③or运算是或运算,只要其中一个为True,or运算结果就是True(有一真即为真)
    python的运算符总结_第5张图片

★例题:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
结果为:4
在这里插入图片描述
分析如下:
python的运算符总结_第6张图片

你可能感兴趣的:(python,python)