&与and在逻辑运算时有相同的效果,往往会把二者混用,但两者有本质差别。
&是位运算符,and为逻辑运算符。&会将左右两个整数转换为二进制进行计算,当同位都为1时取1,否则取0。例如2&3
:10&11=10
,故等于2。而and运算是判断是否为0,0为False,非0为True,结果为False则返回0/False,True则返回and运算符右侧的值。例如2 and 3 = 3
。
当and与&运算符左右都是逻辑语句时,and与&效果一样但又不完全相同。对于and运算符,运算顺序从左到右,当遇到False立马返回结果,不再进行后面的运算,故对于如下语句其不会报错:
a = [1,2,3]
if 1>2 and a[4]==4:
pass
而对于&运算符,其是先将左右两边逻辑运算符的值转化为二进制,再进行位运算。由于其需将运算符两侧的值都计算结束才返回结果,故如下语句会报错:
a = [1,2,3]
if 1>2 & a[4]==4:
pass
此外,在对pandas的dataframe进行多条件切片时,应使用&而非and,否则会报错,此处应采用位运算。
版权声明:本文为dogyii原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。