一 基本运算符
1 算数运算符
算数运算符通常用于数字类型之间进行,但是 '+' 号和 '*' 比较特殊,'+' 和 '*' 可以用于其他类,但是仅限于同种类型直之间进行。
1.1 Python 常用算术运算符:
| 运算符 |
说明 |
实例 |
结果 |
| + |
加 |
12.45 + 15 |
27.45 |
| - |
减 |
4.56 - 0.26 |
4.3 |
| * |
乘 |
5 * 3.6 |
18.0 |
| / |
除法(和数学中的规则一样) |
7 / 2 |
3.5 |
| // |
整除(只保留商的整数部分) |
7 // 2 |
3 |
| % |
取余,即返回除法的余数 |
7 % 2 |
1 |
| ** |
幂运算/次方运算,即返回 x 的 y 次方 |
2 ** 4 |
16,即 24 |
1.2 了解:'+' 与 '*' 的特殊情况
>>> l1=[1,2,3]
>>> l2=[4,5,6]
>>> print(l1 + l2)
[1, 2, 3, 4, 5, 6]
>>> print(l1*3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
2 比较运算符
2.1 比较运算符通常用于数字之间进行。
>>> print(10 == 10)
True
>>> print(10 == "10")
False
>>> print(10 != "10")
True
2.2 了解:字符串也可以比较大小
>>> print("abz" > "abcdef")
True
>>> l1=[1,'abc',18]
>>> l2=["a",'abc',18]
>>> l1 > l2 # 报错,对应位置的值必须是同种类型才可以
TypeError: '>' not supported between instances of 'int' and 'str'
>>> l1=[1,'abc',18,111,222,333]
>>> l2=[2,'abc',18]
>>> print(l2 > l1)
True
3 赋值运算
# 赋值运算的作用:
赋值运算是为了让代码在不丧失可读性的前提下,使代码更简洁。
3.1 增量赋值
>>> age=18
>>> age += 1
>>> print(age)
19
| 运算符 |
描述 |
实例 |
| = |
简单的赋值运算符 |
c = a + b 将 a + b 的运算结果赋值为 c |
| += |
加法赋值运算符 |
c += a 等效于 c = c + a |
| -= |
减法赋值运算符 |
c -= a 等效于 c = c - a |
| *= |
乘法赋值运算符 |
c *= a 等效于 c = c * a |
| /= |
除法赋值运算符 |
c /= a 等效于 c = c / a |
| %= |
取模赋值运算符 |
c %= a 等效于 c = c % a |
| **= |
幂赋值运算符 |
c ** = a 等效于 c = c ** a |
| //= |
取整除赋值运算符 |
c //= a 等效于 c = c // a |
3.2 交叉赋值
x = 111
y = 222
temp=x # 需引入中间变量
x=y
y=temp
x, y = y, x # 一行代码解决,简洁高效
3.3 链式赋值
>>> x=10
>>> y=x
>>> z=y
>>> print(x, y, z)
10 10 10
>>> z = y = x = 10
>>> print(x, y, z)
10 10 10
>>> print(id(x), id(y), id(z))
140726143342528 140726143342528 140726143342528
3.4 解压赋值
>>> salaries = [1.1, 2.2, 3.3, 4.4, 5.5]>>> mon0 = salaries[0]>>> mon1 = salaries[1]>>> mon2 = salaries[2]>>> mon3 = salaries[3]>>> mon4 = salaries[4]>>> print(mon0, mon1, mon2, mon3, mon4)1.1 2.2 3.3 4.4 5.5>>> mon0, mon1, mon2, mon3, mon4 = salaries # 使用一行代码实现,解决代码冗余的问题>>> print(mon0, mon1, mon2, mon3, mon4)1.1 2.2 3.3 4.4 5.5>>> mon0, mon1, mon2, *_ = salaries >>> *_, x, y, z = salaries>>> x, *_, z = salaries
# 注意: 变量名的个数必须与包含的值个数相同,不能多也不能少。若需要取开头几个,或者取结尾几个,或者开头以及结尾的几个同时取,可以使用 '*_' 作为填充的变量名实现,其中起作用的是星号*,下划线的作用是声明这个变量没有意义。
# 对于字典来说,解压赋值取出来的是字典的key。>>> dic = {"k1": 111, "k2": 222}>>> x, y = dic>>> print(x, y)k1 k2#### 3.4.1 了解:字符串也可以解压赋值```python>>> a,b,c,d,e="hello">>> print(a,type(a),b,c,d,e)h <class 'str'> e l l o
4 比较运算
条件:但凡可以得到True或者False两种值的东西都能当作条件。
4.1 显式布尔值:
表面上看就是True或者False。#### 4.1.1 比较运算的结果```pythonprint(10 > 3) # Trueprint(10 == 3) # False
4.1.2 变量值直接就是True或False
tag = True # 自定义一个布尔值
4.2 隐式布尔值:
# 表面上看上去是一种值,在底层会被解释器转换成True或False(1)特殊代表False的字符:None,0,空(空字典、空字符串、空列表)(2)其余的值的布尔值均为True
5 逻辑运算符
5.1 not 条件:
对条件的结果取反。
print(not 10 > 3) # Falseprint(not False) # Trueprint(not 0) # True### 5.2 条件1 and 条件2:```python连接左右两个条件,两个条件必须都为True,最终结果才为True。
print(True and 10 > 3) # Trueprint(True and 10 == 3) # False### 5.3 条件1 or 条件2:```python连接左右两个条件,两个条件必须都为False,最终结果才为False。
print(False or 10 == 3) # Falseprint(True or 10 == 3) # True```python# ps:偷懒原则=》短路运算即在逻辑运算时,根据条件顺序执行的时候,如果在某一步骤可以得出结果,则终止运算。
5.4 优先级划分
多个条件连续的时候,根据优先级,推荐先将and左右的条件括起来,结合not之后,最后就是or的判断。
res = 3 > 4 and 4 > 3 or not 1 == 3 and "x" != "x" or 3 > 3print(res) # Falseres1 = (3 > 4 and 4 > 3) or ((not 1 == 3) and "x" != "x") or 3 > 3 # False False Falseprint(res1) # False```python# 隐式布尔值结果输出print(10 and 0) # 0print(10 and False) # Falseprint(10 or False) # 10