关于any()/all()的另一个Python问题

2024-04-29 10:01:05 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个列表,它只包含任意顺序的真/假值,并且列表的长度不是固定的。让我们调用列表myList

那么,有三种可能性。该列表仅包含真值,该列表仅包含假值,或者该列表包含任意顺序的真/假值的混合

如果我这样做:

if all(myList):
    print('All True')
elif any(myList):
    print('Mixed values')
else:
    print('All False')

我可以知道列表的一般内容,所有真值、所有假值或混合真/假值

问题是:有没有一种方法可以知道在没有if elif else测试的情况下列表是否包含混合的真/假值?是否有任何内置函数可以直接知道列表中有混合值


Tags: true列表if顺序anyall可能性else
2条回答

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.

请注意,上述内容适用于任何列表,因为它仅在删除重复项后检查任何集合的长度。但我想你不会让不正确的价值观进入你的布尔人名单

您的代码基本上迭代列表两次,但一次就足够了:

if 0 < sum(myList) < len(myList):
    print('Mixed values')

相关问题 更多 >