我正在比较列表的第一元素与列表的所有元素。如果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
答案 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]]