我创建了一个函数,我的结果是一个列表:
[3, 3, 3]
现在我需要返回一个布尔值。如果所有元素都是2或更高,我需要返回True,否则我需要返回false。在这种情况下,它将是:真的。 (因为所有元素都是3和3> 2) 有没有快速执行此操作的代码?
我尝试制作一个FOR循环:
for i in [3, 3, 3]: if i >= 2: return True else: return False
我认为这是正确的,但我想知道是否有更快的方法。
提前感谢!
答案 0 :(得分:4)
制作一个generator(generator 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。