目录

  • 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表示假。这分别与特殊的变量TrueFalse等价。

运算符

描述

==

等于 - 比较对象是否相等

!=

不等于 - 比较两个对象是否不相等

>

大于 - 返回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 赋值运算符

运算符

描述

实例

=

简单的赋值运算符

y = a + ba + b的运算结果赋值到变量 y

+=

加法赋值运算符

y += a等效于 y = y + a

-=

减法赋值运算符

y -= a等效于 y = y - a

*=

乘法赋值运算符

y *= a等效于 y = y * a

/=

除法赋值运算符

y /= a等效于 y = y / a

%=

取模赋值运算符

y %= a等效于 y = y % a

**=

幂赋值运算符

y **= a等效于 y = y ** a

//=

取整除赋值运算符

y //= a等效于 y = y // a

:=

海象运算符,可在表达式内部为变量赋值。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,~x类似于 -x-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 逻辑运算符

运算符

逻辑表达式

描述

and

x and y

布尔"与"

or

x or y

布尔"或"

not

not x

布尔"非"

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 成员运算符

成员运算符通常用于字符串、列表、元组、字典、集合以及其他一些序列/迭代对象当中。

运算符

描述

in

如果在指定的序列中找到值返回 True,否则返回 False

not in

如果在指定的序列中没有找到值返回 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用于判断两个变量引用对象是否为同一个, ==用于判断引用变量的值是否相等。

运算符

描述

实例

is

判断两个标识符是不是引用自一个对象

x is y, 类似 id(x) == id(y), 如果引用的是同一个对象则返回 True,否则返回 False

is not

is not是判断两个标识符是不是引用自不同对象

x is not y, 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False

# 不可变对象的赋值
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’

^ |

位运算符

<= < > >=

比较运算符

== !=

等于运算符

= %= /= //= -= += *= **=

赋值运算符

is is not

身份运算符

in not in

成员运算符

not and or

逻辑运算符