python中有一些运算符不是经常会用到,例如&还有|,但是这些运算符在很多场合却能显示奇效。这篇文章让我们一起来看看python中的位运算和集合运算,然后看看实际应用中两个非常巧妙的使用场景。
位运算
位运算只适用于整数,将对应的二进制数逐位进行计算,其规则如下
符号 | 含义 |
---|---|
& | 与运算,都为1返回1,否则返回0 |
| | 或运算,都为0返回0,否则返回1 |
^ | 异或运算,不同为1,相同为0 |
~ | 取反,1变0,0变1 |
<< | 左移 |
>> | 右移 |
前三种是两个整数之间进行运算,后三种是单个整数进行运算
需要注意的是,python中的整数是带符号的,最高位为0代表正数,1表示负数,正数在内存中是原码保存,而负数在内存中是以补码形式保存。补码就是符号位不变,其余所有位取反然后再加1。
看一个简单例子,60的二进制表示为00111100,13的二进制表示为00001101
a=60
b=13
>>> a&b # 00001100
12
>>> a|b # 00111101
61
>>> a^b # 00110001
49
>>> ~a # 11000011 ~a相当于-x-1
-61
>>> a<<2 # 11110000
240
>>> a>>2 # 00001111
15
集合运算
python中的集合set用的不如字典和列表那么多,set用大括号来表示,里面不会有重复的元素
>>> a={
'a',