Python 中 (&,|)和(and,or)之间的区别

(&,|)(and,or)是两组比较相似的运算符。他们的用法如下:

1
2
3
4
a & b
a | b
a and b
a or b

(1)如果a,b是数值变量, 则&|表示位运算,andor则依据是否非0来决定输出,

  • &|

1 & 2,2在二进制里面是10,1在进制中是01,那么01与运算10得到是0

1
2
In [239]: 1 & 2
Out[239]: 0
  • andor

and运算时,and中含0,则返回0,均为非0时,则返回后一个值

1
2
3
4
5
6
7
8
In [240]: 2 and 0
Out[240]: 0

In [241]: 2 and 1
Out[241]: 1

In [242]: 1 and 2
Out[242]: 2

or运算时,至少一个非0时,则返回第一个非0

1
2
3
4
5
6
7
8
In [243]: 2 or 0
Out[243]: 2

In [244]: 2 or 1
Out[244]: 2

In [245]: 0 or 1
Out[245]: 1

(2)如何a, b是逻辑变量, 则两类的用法基本一致

1
2
3
4
5
6
7
8
9
10
11
In [247]: True | False
Out[247]: True

In [248]: True & False
Out[248]: False

In [249]: True and False
Out[249]: False

In [250]: True or False
Out[250]: True

(3)&、| 支持set集合运算

如果a与b是两个set集合,则可以做如下运算:

  • a与b的交集
1
2
3
4
5
In [265]: a = {'a','b','c'}
In [266]: b = {'c','d'}

In [267]: a & b
Out[267]: {'c'}
  • a与b的并集
1
2
In [268]: a|b
Out[268]: {'a', 'b', 'c', 'd'}

除了 &| 之外,set集合也支持 -^ 运算

  • a与b的差集:在集合a存在,不在集合b存在的元素
1
2
In [269]: a-b
Out[269]: {'a', 'b'}
  • a与b的异或
1
2
In [270]: a^b
Out[270]: {'a', 'b', 'd'}

a与b的异或,可以理解为先求出只存在于a的元素集合,在求出只存在于b的元素集合,然后取并集

异或是指相同为1,不同为0

【参考文档】
https://www.cnblogs.com/danjiu/p/11332278.html