在列表中以pythonic方式返回bool值?
我正在比较列表的第一个元素和列表的所有元素。如果有False,我需要返回False,或者如果所有的都是真的,我需要返回true。目前我正在使用在列表中以pythonic方式返回bool值?,python,boolean,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]
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
在_compare中的
False已经是布尔值,所以
return False not in _compare
这是最好的方法
但从更广泛的角度来看:
_==inp[0] for _ in inp
应该是
return all(x==inp[0] for x in inp)
因此,如果一个值为False
即使项目不可散列,此解决方案也可以工作。中的False\u compare
已经是布尔值,所以
return False not in _compare
这是最好的方法
但从更广泛的角度来看:
_==inp[0] for _ in inp
应该是
return all(x==inp[0] for x in inp)
因此,如果一个值为False
即使项目不可散列,此解决方案也可以工作
如果列表中的所有数字都相同,如果不是False,我希望返回True
最直接的方法是:
return len(set(inp)) == 1
这确实要求值是可散列的,但简单的数字是可散列的
如果列表中的所有数字都相同,如果不是False,我希望返回True
最直接的方法是:
return len(set(inp)) == 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]]
您的问题与“我需要检查列表中的所有元素是否相同”的问题相同,因为这两个问题在完全相同的情况下都是正确的。所以你也可以这样解决:
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]]
只要在_compare
中False,试着用一种更简单的方式陈述你的问题:你想知道列表中的所有项目是否相同,列表是否同质?是@deceze如果列表中的所有数字都相同,我想返回True如果不是False只是在_compare
中返回False尝试以更简单的方式陈述您的问题:您想知道列表中的所有项目是否相同,列表是否同质?是@deceze如果列表中的所有数字都相同,我想返回True如果不是False在_compare
中返回False给我布尔值的相反值。案例1返回False,案例2返回TrueFalse不在_compare
中,然后…是的,谢谢,我不确定双重否定没有任何作用。在_compare
中返回False给了我与布尔值相反的值。案例1返回False,案例2返回TrueFalse不在_compare
中,然后…是的,谢谢,我不确定双重否定没有任何作用。您假设列表项是可散列的。@chepner washible,您可以说服我这是一个实数项,它可能会捕获onStupid autocorrect;)@补充了切普纳替代方案。关于pythonicity的评论?=)any(inp[i]!=inp[i+1]表示范围内的i(len(inp)-1))
会更简单,但我会选择它。您假设列表项是可散列的。@chepner washible,您可以说服我这是一个实数项,它可能会捕捉到tupid autocorrect;)@补充了切普纳替代方案。关于pythonicity的评论?=)any(inp[i]!=inp[i+1]表示范围内的i(len(inp)-1))
会更简单,但我会选择它。