关于 any()/all() 的另一个 Python 个问题
Another Python question about any()/all()
假设我有一个只包含 True/False 个值的列表,并且列表的长度不固定。让我们调用列表 myList
.
那么,就有三种可能。该列表仅包含 True 值,该列表仅包含 False 值或该列表包含任意顺序的 True/False 个值的混合。
如果我这样做:
if all(myList):
print('All True')
elif any(myList):
print('Mixed values')
else:
print('All False')
我可以知道列表的大致内容,全部为True,全部为False或混合True/False个值。
问题是:有没有办法在不进行 if elif else
测试的情况下知道列表是否包含混合的 True/False 值?是否有任何内置函数可以直接知道我在列表中有混合值?
您的代码基本上迭代列表两次,但一次就足够了:
if 0 < sum(myList) < len(myList):
print('Mixed values')
The question is: Is there a way to know if the list contains mixed True/False values without the if elif else test? Any built-in function to directly know I have mixed values in the list?
您可以创建一个 lambda 来执行此操作。
mixed = lambda x: len(set(x)) > 1
tf = [True, False, False, True]
f = [False, False, False]
t = [True, True, True]
mixed(tf) # returns true
mixed(t) # returns false
mixed(f) # returns false.
请注意,以上内容适用于任何列表,因为它仅在删除重复项后检查任何集合的长度。但我假设您不会让杂散值进入您的布尔值列表。
假设我有一个只包含 True/False 个值的列表,并且列表的长度不固定。让我们调用列表 myList
.
那么,就有三种可能。该列表仅包含 True 值,该列表仅包含 False 值或该列表包含任意顺序的 True/False 个值的混合。
如果我这样做:
if all(myList):
print('All True')
elif any(myList):
print('Mixed values')
else:
print('All False')
我可以知道列表的大致内容,全部为True,全部为False或混合True/False个值。
问题是:有没有办法在不进行 if elif else
测试的情况下知道列表是否包含混合的 True/False 值?是否有任何内置函数可以直接知道我在列表中有混合值?
您的代码基本上迭代列表两次,但一次就足够了:
if 0 < sum(myList) < len(myList):
print('Mixed values')
The question is: Is there a way to know if the list contains mixed True/False values without the if elif else test? Any built-in function to directly know I have mixed values in the list?
您可以创建一个 lambda 来执行此操作。
mixed = lambda x: len(set(x)) > 1
tf = [True, False, False, True]
f = [False, False, False]
t = [True, True, True]
mixed(tf) # returns true
mixed(t) # returns false
mixed(f) # returns false.
请注意,以上内容适用于任何列表,因为它仅在删除重复项后检查任何集合的长度。但我假设您不会让杂散值进入您的布尔值列表。