Python基本运算符
Python基本运算符
数学运算
运算符 | 说明 | 实例 | 结果 |
---|---|---|---|
+ | 加 | 12.45 + 15 | 27.45 |
- | 减 | 4.56 - 0.26 | 4.3 |
* | 乘,还可以与字符串使用,表示将字符串重复n次 | 5 * 3.6 "ABC" * 2 |
18.0 ABCABC |
/ | 除法(和数学中的规则一样) | 7 / 2 | 3.5 |
// | 整除(只保留商的整数部分) | 7 // 2 | 3 |
% | 取余,即返回除法的余数 | 7 % 2 | 1 |
** | 幂运算/次方运算,即返回 x 的 y 次方 | 2 ** 4 | 16 |
整型和浮点型都属于数字,彼此可以直接进行数学运算。
+号和*号在字符串和列表中也能使用。+号能将多个字符串或列表拼接到一起,*号能将字符串或列表元素重复n次
x = '胖虎'
s = '吃肉'
print(x + s)
# 胖虎吃肉
l = [1,'a',3]
l2 = ['d','c','e']
print(l + l2)
# [1, 'a', 3, 'd', 'c', 'e']
print(s * 3)
# 吃肉吃肉吃肉
print(l * 3)
# [1, 'a', 3, 1, 'a', 3, 1, 'a', 3]
位运算
Python 位运算符只能用来操作整数类型,它按照整数在内存中的二进制形式进行计算,并不是整数的二进制形式的运算。
位运算符 | 说明 | 使用形式 | 举 例 |
---|---|---|---|
& | 按位与 | a & b | 4 & 5 |
| | 按位或 | a | b | 4 | 5 |
^ | 按位异或 | a ^ b | 4 ^ 5 |
~ | 按位取反 | ~a | ~4 |
<< | 按位左移 | a << b | 4 << 2,表示整数 4 按位左移 2 位 |
>> | 按位右移 | a >> b | 4 >> 2,表示整数 4 按位右移 2 位 |
赋值运算
=
:最基本的赋值运算符是等号=
,用来将一个表达式的值赋给另一个变量;结合其它运算符,=
还能扩展出更强大的赋值运算符。
运算符 | 说 明 | 用法举例 | 等价形式 |
---|---|---|---|
= | 最基本的赋值运算 | x = y | x = y |
+= | 加赋值 | x += y | x = x + y |
-= | 减赋值 | x -= y | x = x - y |
*= | 乘赋值 | x *= y | x = x * y |
/= | 除赋值 | x /= y | x = x / y |
%= | 取余数赋值 | x %= y | x = x % y |
**= | 幂赋值 | x **= y | x = x ** y |
//= | 取整数赋值 | x //= y | x = x // y |
&= | 按位与赋值 | x &= y | x = x & y |
|= | 按位或赋值 | x |= y | x = x | y |
^= | 按位异或赋值 | x ^= y | x = x ^ y |
<<= | 左移赋值 | x <<= y | x = x << y,这里的 y 指的是左移的位数 |
>>= | 右移赋值 | x >>= y | x = x >> y,这里的 y 指的是右移的位数 |
增量赋值
age += 2 # age=age+2
age -= 2
age **= 2 # age = age ** 2
print(age)
链式赋值
x=y=z=10
print(id(x))
print(id(y))
print(id(z))
交叉赋值
# 直接交换两个变量值,而不用定义第三个变量。
x=10
y=20
x,y=y,x
print(x)
print(y)
# 20 10
解压赋值
salary = [1.1, 2.2, 3.3, 4.4, 5.5]
mon1=salary[0]
mon2=salary[1]
mon3=salary[2]
mon4=salary[3]
mon5=salary[4]
# 下面的1行赋值等同于上面的5行
mon1,mon2,mon3,mon4,mon5=salary
print(mon1,mon2,mon3,mon4,mon5)
# 变量名多一个不行少一个不行,必须与值一一对应。下面俩都会报错
mon1,mon2,mon3,mon4=salary
mon1,mon2,mon3,mon4,mon5,mon6=salary
# 可以使用*_来接收其他多余的值。*号会将多余的值全部接收到一个列表中,然后复制给_
mon1,mon2,mon3,*_=salary
print(mon1,mon2,mon3)
print(_)
# 1.1 2.2 3.3
mon1,mon2,*_,mon5=salary
print(mon1)
print(mon2)
print(mon5)
# 1.1 2.2 5.5
# 字典接收的是键,可以通过键取到值。
dic={"k1":111,"k2":222,'K3':333}
x,y,z=dic
print(x,y,z)
# k1 k2 K3
x,*_=dic
print(x)
# k1
比较运算
比较运算符 | 说明 |
---|---|
> | 大于,如果> 前面的值大于后面的值,则返回 True,否则返回 False。 |
< | 小于,如果< 前面的值小于后面的值,则返回 True,否则返回 False。 |
== | 等于,如果== 两边的值相等,则返回 True,否则返回 False。 |
>= | 大于等于(等价于数学中的 ≥),如果>= 前面的值大于或者等于后面的值,则返回 True,否则返回 False。 |
<= | 小于等于(等价于数学中的 ≤),如果<= 前面的值小于或者等于后面的值,则返回 True,否则返回 False。 |
!= | 不等于(等价于数学中的 ≠),如果!= 两边的值不相等,则返回 True,否则返回 False。 |
is | 判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。 |
is not | 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False。 |
==号同类型数据都可以进行比较。>和<可以比较字符串和列表。
逻辑运算符
逻辑运算符 | 含义 | 基本格式 | 说明 |
---|---|---|---|
and | 逻辑与运算,等价于数学中的“且” | a and b | 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 |
or | 逻辑或运算,等价于数学中的“或” | a or b | 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。 |
not | 逻辑非运算,等价于数学中的“非” | not a | 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。 |
在没有括号“()”的情况下,优先级:not>and>or。同一优先级从左至右依次计算。
另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。
短路运算
and运算只要有一项为False,后面的结果不用判断,最终结果一定为False。
or运算只要有一项为True,后面的结果不用判断,最终结果一定为True。
print('ha' and 123)
# 123
print(123 or 'abc')
# 123
身份运算
is比较的是id
==比较的是值
id一样,值一定一样。值一样,id不一定一样。
成员运算:
判断值是否在对象中。
- in 若在,返回True。
- not in 若不在,返回True。
例:s = '李白苏轼杜甫'
print('白苏' in s)
# True
print('李苏' nor in s)
#字符串‘李苏’为一个整体,并不包含在s当中,所以返回为True
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |