1、算数运算符
加 - 减 * 乘 / 除 % 取余 ** 返回x的y次幂 //返回商的整数部分
/返回浮点数类型 想要返回整数类型 使用//整除
2、比较运算符
== != > < >= <=
3、赋值运算符
+= -= *= /= %= **= //=
4、逻辑运算符
and #逻辑与
or #逻辑或
not #逻辑非
Python语言支持逻辑运算符,以下假设变量a为10,b为20:
and:x and y 布尔“与”–如果x为False,x and y返回False,否则它返回y的计算值。 (a and b)返回20。
or:x or y 布尔“或”–如果x是True,它返回x的值,否则它返回y的计算值 (a or b)返回10。
not:not x 布尔“非”–如果x为True,返回False。如果x为False,它返回True not(a and b)返回False
逻辑运算符特点
返回值特点: 在逻辑运算符两侧的哪个值判断出整条语句的真假,就返回哪个值。
4.1、and 逻辑与
特点:两侧为真才为真,有一侧为假就为假
print(False and 1)
>> False #第一个值为假,所以就判断出该语句为假(判断结束),因此返回第一个值False。
print([] and 1)
>> [] #第一个值为假,所以就判断出该语句为假(判断结束),因此返回第一个值[]。
print(1 and 2)
>> 2 #第一个值为真,接下来判断第二个值,第二个值也为真,所以就判断出该语句为真(判断结束),因此返回第二个值。
print(1 and [])
>> [] #第一个值为真,接下来判断第二个值,第二个值为假,所以就判断出该语句为假(判断结束),因此返回第二个值。
4.2、or 逻辑或
特点:有一侧为真就为真,两侧为假才为假
print(1 or 2)
>> 1 #第一个值为真,所以判断出该语句为真(判断结束),因此返回出第一个值1
print(False or 1)
>> 1 #第一个值为假,接下来判断第二个值,第二个值为真,所以就判断出该语句为真(判断结束),因此返回第二个值1。
print(0 or 1)
>> 1 #第一个值为假,接下来判断第二个值,第二个值为真,所以就判断出该语句为真(判断结束),因此返回第二个值1。
print(False or [])
>> [] #第一个值为假,接下来判断第二个值,第二个值为假,所以就判断出该语句为假(判断结束),
因此返回第二个值为[]。
4.3、not 逻辑非
特点:真为假,假为真
print(not 1)
>> False
print(not [])
>> True
print(not False)
>> True
5、成员运算符
说明:
in #如果在指定的序列中找到值返回True,否则返回False
not in #如果在指定的序列中没有找到值返回True,否则返回False
6、身份运算符
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。
==和is的区别
- is是比较两个引用是否指向了同一个对象(比较的是内存地址是否相同)
- ==是比较两个对象是否相等
>>> a = [1, 2, 3]
>>> b = a
>>> b is a # a的引用复制给b,他们在内存中其实是指向了用一个对象
True
>>> b == a # 当然,他们的值也是相等的
True
>>> b = a[:] # b通过a切片获得a的部分,这里的切片操作重新分配了对象,
>>> b is a # 所以指向的不是同一个对象了
False
>>> b == a # 但他们的值还是相等的
True
7、位运算符
^ : 按位异或运算符,当两个对应的二进制相异时,结果为1
面试题:
不使用第三个变量交换两个变量的值:
1.利用加法
x = 2
y = 1
print(x, y)
>>> 2 1
x = x + y
y = x - y
x = x - y
print(x, y)
>>> 1 2
2.利用对称赋值
x = 2
y = 1
print(x, y)
>>> 2 1
x, y = y, x
print(x, y)
>>> 1 2
3.位运算^键值交换
x = 2 #二进制表示:0010
y = 1 #二进制表示:0001
x = x ^ y #二进制表示:0010 ^ 0001 = 0011 = 3
y = x ^ y #二进制表示:0011 ^ 0001 = 0010 = 2
x = x ^ y #二进制表示:0011 ^ 0010 = 0001 = 1
print(x, y)
>>> 1 2