断言所有值均为负值或所有值均为非负值

时间:2018-05-21 12:24:17

标签: python

我需要声明数组中的所有数值都是负数或非负数。

我写了这个:

def check(arr):
    return all([i < 0 for i in arr]) or all([i >= 0 for i in arr])

而这一点,我认为效率稍高:

def check(arr):
    temp = [i < 0 for i in arr]
    return all(temp) or not any(temp)

我想知道是否有更清洁/更pythonic的方式,或者我可以使用的一些算术技巧。

谢谢:)

1 个答案:

答案 0 :(得分:2)

一种方法是使用集合理解来导出set布尔值。此set将为{True}{False}{True, False}。然后测试set的长度是否等于1。

def check(arr):
    return len({i < 0 for i in arr}) == 1