以pythonic方式返回bool值列表中的比较?

时间:2017-11-29 13:05:59

标签: python boolean

我正在比较列表的第一元素与列表的所有元素。如果False在那里我需要返回false或者如果一切都是真的,我需要返回True。目前我正在使用if-else执行此操作。是否有任何pythonic方式返回bool

def checker(inp):
    _compare = [ _==inp[0] for _ in inp] 
    return False if False in _compare else True

lst = [5, 5, 5]
lst2 = [5, 5, 6]

# Case 1
level = checker(inp=lst)
print(level)
True

# Case 2 
level2 = checker(inp=lst2)
print(level2)
False

任何pythonic方式来实现这个

return False if False in _compare else True

3 个答案:

答案 0 :(得分:2)

False in _compare已经是一个布尔值,所以

return False not in _compare

是最好的方法。

但看起来更宽:

_==inp[0] for _ in inp

应该是

return all(x==inp[0] for x in inp)

如果一个值为False

,则返回False

即使这些项目不可用,此解决方案也可以使用。

答案 1 :(得分:1)

  

如果列表中的所有数字都相同,我想返回True,如果不是False

最直接的方式:

return len(set(inp)) == 1

这确实需要值可以清除,但是简单的数字是。

答案 2 :(得分:1)

您的问题与“我需要检查列表中的所有元素是否相同”这一问题相同,因为两者都适用于完全相同的情况。所以你也可以这样解决:

def checker(inp):
    return len(set(inp)) == 1

如果这是最狡猾的方式......我不知道。

编辑:在不可用项目的情况下替代:

def checker(inp):
    return not [True for i in range(len(inp) - 1)) if [inp[i] != inp[i+1]]