在布尔值True和False上使用算术运算

时间:2019-03-09 08:30:26

标签: python

在python中,有这样的功能-可以添加,减去等对True和False

有没有一些例子可以使它有用?

此功能有什么真正的好处,例如,何时:

  • 它提高了生产力
  • 它使代码更简洁(不损失速度) 等等

2 个答案:

答案 0 :(得分:2)

尽管在大多数情况下使用(使用)此功能会造成混乱,并且完全没有必要,但我认为有些情况是例外。

一个例子就是计数。 True强制转换为1,因此您可以计算以这种方式通过某些条件的元素的数量,同时保持简洁和可读性。例如:

valid_elements = sum(is_valid(element) for element in iterable)

如评论中所述,这可以通过以下方式实现:

valid_elements = list(map(is_valid, iterable)).count(True)

但是要使用.count(...),对象必须是一个列表,这会带来线性空间复杂性(对于我们所知,可迭代可能是一个恒定的空间生成器)。

此功能可能可以使用的另一种情况是在序列的三元运算符上进行操作,根据该值您需要序列还是空序列。假设条件成立,您要返回结果列表,否则为空列表:

return result_list * return_empty

或者如果您要进行条件字符串连接

result = str1 + str2 * do_concatenate

当然,这两个都可以通过使用python的三元运算符来解决:

return [] if return_empty else result_list
...
result = str1 + str2 if do_concatenate else str1

关键是,这种行为确实在一些不太合理的情况下提供了其他选择。只是要根据自己的最佳判断来决定是否会给以后的读者(包括您自己)造成混乱。

答案 1 :(得分:0)

我会不惜一切代价避免它。它令人困惑,并且反对打字。允许Python并不意味着您应该这样做...