python &与and运算符

&与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,否则会报错,此处应采用位运算。

你可能感兴趣的:(python,python)