基本运算符
我们在前面讲解了“+”、“-”、“*”、“/”、“//”、“%”等运算符,这里我们继续讲解一些其他运算符,并进行学习和试验。
运算符 | 说明 |
and, or, not | 布尔与、布尔或、布尔非 |
is, is not | 同一性判断,判断是否为同一个对象 |
<, <=, >, >=, !=, == | 比较值是否相当,可以连用 |
|, &, ^ | 按位或,按位与,按位异或(异或:值不同为1) |
<<, >> | 移位 |
~ | 按位翻转 |
+, -, *, /, //, % | 加,减,乘,浮点除、整数除、取余 |
** | 幂运算 |
1. 比较运算符可以连用,并且含义和我们日常使用完全一致。
>>> a = 4
>>> 3<a<10 #关系运算符可以连用
True
注:在java和C中不可以连用。
2. 位操作
>>> a = 0b11001
>>> b = 0b01000
>>> c = a|b
>>> bin(c) #bin()可以将数字转成二进制表示
'0b11001'
>>> bin(c&b)
'0b1000'
>>> bin(c^b)
'0b10001'
>>> a = 3
>>> a<<2 #左移 1 位相当于乘以 2.左移 2 位,相当于乘以 4
12
>>> a = 8
>>> a>>1 #右移 1 位相当于除以 2.
老师:位操作乘除比*,/乘除运行速度快得多。
3. 加法操作
(1) 数字相加 3+2 ==> 5
(2) 字符串拼接 “3”+“2”==> “32”
(3) 列表、元组等合并 [10,20,30]+[5,10,100] ==>[10,20,30,5,10,100]
4. 乘法操作
(1) 数字相乘 3*2 ==> 6
(2) 字符串复制 “sxt”*3 ==> ”sxtsxtsxt”
(3) 列表、元组等复制 [10,20,30]*3 ==> [10,20,30,10,20,30,10,20,30]
复合赋值运算符(也被称为增强型赋值运算符?)
复合赋值可以让程序更加精炼,提高效率。
运算符 | 描述 | 示例 | 等价于 |
+= | 加法赋值、 字符串拼接 | sum += n a += “sxt” | sum = sum + n a = a + “sxt” |
-= | 减法赋值 | num1 -= n | num = num - n |
*= | 乘法赋值 | a *= b | a = a * b |
/= | 浮点除赋值 | a /= b | a = a / b |
//= | 整数除赋值 | a //= b | a = a//b |
%= | 取余赋值 | a %= b | a = a % b |
**= | 幂运算赋值 | a **= 2 | a = a**2 |
<<= | 左移赋值 | a <<= 2 | a = a<<2 |
>>= | 右移赋值 | a >>= 2 | a = a>>2 |
&= | 按位与赋值 | a &= b | a = a&b |
|= | 按位或赋值 | a |= b | a = a|b |
^= | 按位异或赋值 | a ^= b | a = a^b |
注:与 C 和 JAVA 不一样,Python 不支持自增(++)和自减(--)
运算符优先级问题
如下优先级,从高到低。
运算符 | 描述 |
** | 指运算(最高优先级) |
~ | 按位翻转 |
* / % // | 乘,除,取模和取、整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 按位与 |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
Is, is not | 身份运算符 |
In, not in | 成员运算符 |
Not, or, and | 逻辑运算符 |
老师:实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。
1. 乘除优先加减
2. 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符
【操作】使用 python 表示数学式:
(5+10*x)/5-13*(y-1)*(a+b)/x+9*(5/x+(12+x)/y)