+运算符除了用于算术加法,还可以用于列表、元组和字符串的合并或连接,生成新对象:
>>> 3 + (3+4j) #整数和复数相加
(6+4j)
>>> [1, 2, 3] + [4, 5, 6] #连接两个列表
[1, 2, 3, 4, 5, 6]
>>> (1, 2, 3) + (4,) #连接两个元组
(1, 2, 3, 4)
>>> 'abcd' + '1234' #连接两个字符串
'abcd1234'
-运算符除了用于算数减法,还可以用于集合的差集运算:
>>> {1, 2, 3, 4, 5} - {3} #差集
{1, 2, 4, 5}
*运算符除了表示算术乘法,还可用于序列与整数的乘法,表示序列元素的重复,生成新的序列对象:
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> (1, 2, 3) * 3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> 'abc' * 3
'abcabcabc'
运算符/和//在Python中分别表示算术除法和算术求整商:
>>> 3 / 2 #这里用的Python 3.x
1.5
>>> 15 // 4
3
%运算符可以用于整数或实数的求余数,还可以用于字符串格式化:
>>> 123.45 % 3.2
1.849999999999996
>>> 789 % 23
7
>>> '%c, %d'%(65, 65)
'A, 65'
**表示幂运算,例如x**y表示x的y次方:
>>> 9**0.5 #等价于math.sqrt(9)
3.0
Python关系运算符最大的特点是可以连用,并且其含义与我们日常的理解完全一致。当然使用关系运算符的一个最重要的前提是,操作数之间必须可比较大小。例如把一个字符串和一个数字进行大小比较是毫无意义的,所以Python也不支持这样的运算。
>>> 1 < 3 < 5 #等价于1 < 3 and 3 < 5
True
>>> 3 < 5 > 2
True
>>> 1 > 6 < 8
False
>>> 'Hello' > 'world' #比较字符串大小
False
>>> [1, 2, 3] < [1, 2, 4] #比较列表大小
True
>>> 'Hello' > 3 #字符串和数字不能比较
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
'Hello' > 3
TypeError: unorderable types: str() > int()
成员测试运算符in用于成员测试,即测试一个对象是否是另一个对象的成员:
>>> 3 in [1, 2, 3] #测试3是否为列表[1, 2, 3]的成员
True
>>> 5 in range(1, 10, 1) #range()是用来生成指定范围数字的内置函数
True
>>> 'abc' in 'abcdefg'
True
>>> for i in (3, 5, 7): #用在循环中,成员遍历
print(i, end='\t')
3 5 7
位运算符只能用于整数,内部执行过程是:首先将整数转换为二进制数,然后右对齐,必要的时候左侧补0,按位进行运算,最后再把计算结果转换为十进制数字返回。
>>> 3 << 2 #把3左移2位
12
>>> 3 & 7 #位与运算
3
>>> 3 | 8 #位或运算
11
>>> 4 | 6
6
>>> 3 ^ 5 #位异或运算
6
另外,位运算符还可以用于集合运算:
>>> {1, 2, 3, 4, 5} | {6} #并集
{1, 2, 3, 4, 5, 6}
>>> {1, 2, 3, 4, 5} & {3} #交集
{3}
>>> {1, 2, 3, 4, 5, 6} ^ {5, 6, 7, 8} #对称差集
{1, 2, 3, 4, 7, 8}