lilia在看js
中的&&
时产生了疑问,这个和python
中的&
有什么区别?
这个时候喝药药给lilia举了一个例子。
1 and 2 and [] and 4 // return []
1 and 2 and 3 and 4 // return 4
4 & 2 // return 0
1 or 2 or [] or 4 // return 1
[] or None or "" or 4 or 5 // return 4
and
是 逻辑运算符,从左到右进行判断。(以&
为例,我之前的记忆方法是,exp1 & exp2
, 如果exp1
可以转换为true
,则输出结果为exp2
)
&
是 位运算符。是对应的二进制数进行位运算。
具体解释第一个例子:从左到右开始判断,1
可以转换为 true
,2
也可以,[]
不可以,此时输出[]
。
而&
是位运算符,4
转换为二进制是100
,2
是010
,1-0
为0
, 0-1
为0
, 0-0
为0
,结合起来为000
,输出为0
。
我就按自己看得懂的方式记录了一下。以前没有特别注意过 &
和and
的区别,特别是在pandas
中筛选行条件时,经常使用到位运算符,也是因为位运算的速度要快一点。