在Python中用'/'表示大于和小于?
我最近开始玩代码高尔夫,想尽量减少代码的字符数。
我记得有人说过可以用 if a/b:
来代替 if a<=b:
。不过,我查了查Python的文档,没有找到相关的内容。
我可能记错了,但我很确定我在多个地方见过这个操作符被使用和推荐。
这个操作符真的存在吗?如果存在的话,它是怎么工作的呢?
2 个回答
6
这其实就是简单的除法。对于整数来说,如果 a >= 0
(a大于等于0)并且 b > 0
(b大于0),那么当 a
大于等于 b
时,a/b
的结果是“真”的。因为在这种情况下,a/b
是一个严格的正整数,而对一个非零整数使用 bool()
函数的结果是 True
。
至于零和负整数的情况,我相信你可以自己算出 a/b
的真假。
5
>>> 5/6
0
>>> bool(5/6)
False
>>> 6/5
1
>>> bool(6/5)
True
这是因为在Python 2.7中,/
这个符号会进行整数除法,然后把结果转换成布尔值(真或假)。
如果你使用了from __future__ import division
,那么这个情况就不一样了,因为此时/
会进行浮点数除法,而不是整数除法。
所以对于x < y
的情况,结果仍然会大于0,并且依然会被判断为真(True)。
>>> from __future__ import division
>>> 5/6
0.8333333333333334
>>> bool(5/6)
True
>>> 6/5
1.2
>>> bool(6/5)
True