python基础之运算符

一 基本运算符

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
posted @ 2020-03-06 07:48  越关山  阅读(171)  评论(0)    收藏  举报