列表的布尔值

时间:2014-11-23 12:25:25

标签: python list boolean counting

我创建了一个函数,我的结果是一个列表:

[3, 3, 3]

现在我需要返回一个布尔值。如果所有元素都是2或更高,我需要返回True,否则我需要返回false。在这种情况下,它将是:真的。 (因为所有元素都是3和3> 2) 有没有快速执行此操作的代码?

我尝试制作一个FOR循环:

for i in [3, 3, 3]: if i >= 2: return True else: return False

我认为这是正确的,但我想知道是否有更快的方法。

提前感谢!

3 个答案:

答案 0 :(得分:4)

制作一个generatorgenerator expression这里),产生布尔值并将其传递给all function

>>> all(x >= 2 for x in [3, 3, 3])
True

我看到你发布了你的代码,它不正确,因为它只会检查列表的第一个元素。你可以解决它:

for i in your_list: 
    if i < 2: 
        return False # Return early
return True # if `i < 2` was False for all elements in the list, return True

答案 1 :(得分:0)

a= [3, 3, 3]
b=[elem for elem in a if elem > 2]  
print (a==b)

输出:True

或以更浓缩的方式

a= [3, 3, 3]
print([elem for elem in a if elem > 2]==a)  

输出:True

答案 2 :(得分:0)

def areGreaterEqualThen2(lst):
    if lst:
        return lst[0] >= 2 and areGreaterEqualThen2(lst[1:])
    return True

如果你必须定义自己的功能。

这也是一个快速的解决方案,因为如果第一个条件为false,则整个and返回false。