目录
- 7.【Python编程】运算符相关知识及基本操作
- 7.1 Python的运算符
- 7.2 算术运算符
- 7.3 比较运算符
- 7.4 赋值运算符
- 7.5 位运算符
- 7.6 逻辑运算符
- 7.7 成员运算符
- 7.8 身份运算符
- 7.9 运算符的优先级
7.【Python编程】运算符相关知识及基本操作
备注: 本教程主要使用Python3.6在jupyter notebook上编程实现。Python环境配置参考《【Python学习】Windows10开始你的Anaconda安装与Python环境管理》或者《【Python学习】纯终端命令开始你的Anaconda安装与Python环境管理》。
7.1 Python的运算符
Python当中的运算符包括:
- 算术运算符:用于两个对象算数计算(加减乘除等运算)
- 比较(关系)运算符:用于两个对象比较(判断是否相等、大于等运算)
- 赋值运算符:用于对象的赋值,将运算符右边的值(或计算结果)赋给运算符左边。
- 逻辑运算符:用于逻辑运算(与或非等)。
- 位运算符:对Python对象进行按照存储的位进行操作。
- 成员运算符:判断一个对象是否包含另一个对象。
- 身份运算符:判断是不是引用自一个对象。
7.2 算术运算符
运算符 | 描述 |
| 加 - 两个对象相加 |
| 减 - 得到负数或是一个数减去另一个数 |
| 乘 - 两个数相乘或是返回一个被重复若干次的字符串 |
| 除 - x 除以 y |
| 取模 - 返回除法的余数 |
| 幂 - 返回x的y次幂 |
| 取整除 - 向下取接近商的整数 |
# +运算符
a=500; b=20
print("a+b=",a+b)
# +运算符能用于字符串运算,表示字符串拼接
str1="I "; str2="Love "; str3="You!"
print("str1+str2+str3=",str1+str2+str3)
# -运算符
print("a-b=",a-b)
# -运算符不能用于字符串运算
#print("str1-str2-str3=",str1-str2-str3)
'''
TypeError: unsupported operand type(s) for -: 'str' and 'str'
'''
# *运算符
print("a*b=",a*b)
# *运算符可以用来表示字符串的重复输出
print("str1*5=",str1*5) # 重复字符串“I ”5次
# /运算符
print("a/b=",a/b) # 返回的是浮点数
# %运算符
print("a%b=",a%b)
# **运算符
print("2**10=",2**10)
print("3.14//2=",3.14//2)
a+b= 520
str1+str2+str3= I Love You!
a-b= 480
a*b= 10000
str1*5= I I I I I
a/b= 25.0
a%b= 0
2**10= 1024
3.14//2= 1.0
7.3 比较运算符
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True
和False
等价。
运算符 | 描述 |
| 等于 - 比较对象是否相等 |
| 不等于 - 比较两个对象是否不相等 |
| 大于 - 返回x是否大于y |
| 小于 - 返回x是否小于y |
| 大于等于 - 返回x是否大于等于y |
| 小于等于 - 返回x是否小于等于y |
a=1; b=2; c=1.0
print("a=",a,"\tb=",b,"\tc=",c)
print("判断a是否等于b: ",a==b)
print("判断a是否等于c: ",a==c)
print("判断a是否不等于b: ",a!=b)
print("判断a是否不等于c: ",a!=c)
print("判断a是否大于b: ",a>b)
print("判断a是否小于b: ",a<b)
print("判断a是否大于等于b: ",a>=b)
print("判断a是否小于等于b: ",a<=b)
# 字符串、列表、元组、集合的比较运算
str1="Hello"; str2="Hello"
print("判断str1是否等于str2: ",str1==str2)
list1=[1,2,3]; list2=[1,2,3];list3=[3,2,1]
print("判断list1是否等于list2: ",list1==list2) # 两个列表完全一样
print("判断list1是否等于list3: ",list1==list3)
set1=set([1,2,3]); set2=set([1,2,3]); set3=set([3,2,1])
print(set1,set2,set3) # 3个集合完全一样
print("判断set1是否等于set2: ",set1==set2)
print("判断set1是否等于set3: ",set1==set3)
set4={1,2,3}; set5={1,2,3}; set6={3,2,1}
print(set4,set5,set6) # 3个集合完全一样,集合的元素没有顺序
print("判断set4是否等于set5: ",set4==set5)
print("判断set4是否等于set6: ",set4==set6)
tuple1=(1,2,3); tuple2=(1,2,3); tuple3=(3,2,1)
print(tuple1,tuple2,tuple3) # 3个元组不完全一样
print("判断tuple1是否等于tuple2: ",tuple1==tuple2)
print("判断tuple1是否等于tuple3: ",tuple1==tuple3)
dict1={"1":1,"2":2}; dict2={"1":1,"2":2}; dict3={"2":2,"1":1}
print(dict1,dict2,dict3) # 3个字典不完全一样
print("判断dict1是否等于dict2: ",dict1==dict2)
print("判断dict1是否等于dict3: ",set1==dict3)
a= 1 b= 2 c= 1.0
判断a是否等于b: False
判断a是否等于c: True
判断a是否不等于b: True
判断a是否不等于c: False
判断a是否大于b: False
判断a是否小于b: True
判断a是否大于等于b: False
判断a是否小于等于b: True
判断str1是否等于str2: True
判断list1是否等于list2: True
判断list1是否等于list3: False
{1, 2, 3} {1, 2, 3} {1, 2, 3}
判断set1是否等于set2: True
判断set1是否等于set3: True
{1, 2, 3} {1, 2, 3} {1, 2, 3}
判断set4是否等于set5: True
判断set4是否等于set6: True
(1, 2, 3) (1, 2, 3) (3, 2, 1)
判断tuple1是否等于tuple2: True
判断tuple1是否等于tuple3: False
{'1': 1, '2': 2} {'1': 1, '2': 2} {'2': 2, '1': 1}
判断dict1是否等于dict2: True
判断dict1是否等于dict3: False
7.4 赋值运算符
运算符 | 描述 | 实例 |
| 简单的赋值运算符 |
|
| 加法赋值运算符 |
|
| 减法赋值运算符 |
|
| 乘法赋值运算符 |
|
| 除法赋值运算符 |
|
| 取模赋值运算符 |
|
| 幂赋值运算符 |
|
| 取整除赋值运算符 |
|
| 海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符 |
a = 2
b = 10
y = 0
print("a=",a,"\tb=",b,"\ty=",y)
y = a + b
print ("y = a + b 的值为:", y)
y += a
print ("y += a 的值为:", y)
y *= a
print ("y *= a 的值为:", y)
y /= a
print ("y /= a 的值为:", y)
y %= a
print ("y %= a 的值为:", y)
y = 4
print("a=",a,"\tb=",b,"\ty=",y)
y **= a
print ("y **= a 的值为:", y)
y //= a
print ("y //= a 的值为:", y)
a= 2 b= 10 y= 0
y = a + b 的值为: 12
y += a 的值为: 14
y *= a 的值为: 28
y /= a 的值为: 14.0
y %= a 的值为: 0.0
a= 2 b= 10 y= 4
y **= a 的值为: 16
y //= a 的值为: 8
7.5 位运算符
运算符 | 描述 |
| 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 |
| 按位异或运算符:当两对应的二进位相异时,结果为1 |
| 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1, |
| 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0 |
| 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 |
a = 18 # 二进制的0001 0010
b = 11 # 二进制的0000 1011
print("a&b=", a&b) # 0001 0010 & 0000 1011=0000 0010=2
print("a|b=", a|b) # 0001 0010 | 0000 1011=0001 1011=16+8+2+1=27
print("a^b=", a^b) # 0001 0010 ^ 0000 1011=0001 1001=16+8+1=25
print("~a=",~a) # ~ a = -a-1 = -19
print("a<<2=",a<<2) # 0001 0010 <<2 = 0100 1000=72
print("a>>2=",a>>2) # 0001 0010 >>2 = 0000 0100=4
a&b= 2
a|b= 27
a^b= 25
~a= -19
a<<2= 72
a>>2= 4
7.6 逻辑运算符
运算符 | 逻辑表达式 | 描述 |
|
| 布尔"与" |
|
| 布尔"或" |
|
| 布尔"非" |
a = 10; b=-1
print("判断a>0且b>0的真值:", a>0 and b>0)
print("判断a>0或b>0的真值:", a>0 or b>0)
print("判断b不大于0的真值:", not b>0)
判断a>0且b>0的真值: False
判断a>0或b>0的真值: True
判断b不大于0的真值: True
7.7 成员运算符
成员运算符通常用于字符串、列表、元组、字典、集合以及其他一些序列/迭代对象当中。
运算符 | 描述 |
| 如果在指定的序列中找到值返回 True,否则返回 False |
| 如果在指定的序列中没有找到值返回 True,否则返回 False |
list1 = [1,2,3,4,5]
print(1 in list1)
print(10 in list1)
print(100 not in list1)
str1="Hello world!"
print("Hello" in str1)
print("Hi" in str1)
True
False
True
True
False
7.8 身份运算符
- 需要区别身份运算符
is
与比较运算符==
;is not
与比较运算符!=
的区别! -
is
用于判断两个变量引用对象是否为同一个,==
用于判断引用变量的值是否相等。
运算符 | 描述 | 实例 |
| 判断两个标识符是不是引用自一个对象 |
|
|
|
|
# 不可变对象的赋值
x=1; y=1
print("x=",x,"\ty=",y)
print("id(x)=",id(x),"\tid(y)=",id(y))
print("x==y的结果:", x==y)
print("x is y的结果:", x is y)
# 可变对象的赋值
list1=[1,2,3,4]
list2=[1,2,3,4]
print("list1=",list1,"\tlist2=",list2)
print("id(list1)=",id(list1),"\tid(list2)=",id(list2))
print("list1==list2的结果:", list1==list2)
print("list1 is list2的结果:", list1 is list2)
x= 1 y= 1
id(x)= 94023732861632 id(y)= 94023732861632
x==y的结果: True
x is y的结果: True
list1= [1, 2, 3, 4] list2= [1, 2, 3, 4]
id(list1)= 140182500839176 id(list2)= 140182500837128
list1==list2的结果: True
list1 is list2的结果: False
7.9 运算符的优先级
按优先级从高到低,**
的优先级最高。
运算符 | 描述 |
| 指数 (最高优先级) |
| 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
| 乘,除,求余数和取整除 |
| 加法减法 |
| 右移,左移运算符 |
| 位 ‘AND’ |
| 位运算符 |
| 比较运算符 |
| 等于运算符 |
| 赋值运算符 |
| 身份运算符 |
| 成员运算符 |
| 逻辑运算符 |