my_list1 = [30,34,56]
my_list2 = [29,500,43]
如何检查列表中的所有值是否> = 30? my_list1
应该可以工作,而 my_list2
不应该。
我唯一能想到的就是:
boolean = 0
def func(ls):
for k in ls:
if k >= 30:
boolean = boolean + 1
else:
boolean = 0
if boolean > 0:
print 'Continue'
elif boolean = 0:
pass
2016 年更新:
事后看来,在处理了速度实际上很重要的更大数据集并利用 numpy
…我会这样做:
>>> my_list1 = [30,34,56]
>>> my_list2 = [29,500,43]
>>> import numpy as np
>>> A_1 = np.array(my_list1)
>>> A_2 = np.array(my_list2)
>>> A_1 >= 30
array([ True, True, True], dtype=bool)
>>> A_2 >= 30
array([False, True, True], dtype=bool)
>>> ((A_1 >= 30).sum() == A_1.size).astype(np.int)
1
>>> ((A_2 >= 30).sum() == A_2.size).astype(np.int)
0
您还可以执行以下操作:
len([*filter(lambda x: x >= 30, my_list1)]) > 0
原文由 O.rka 发布,翻译遵循 CC BY-SA 4.0 许可协议
将
all()
函数 与生成器表达式一起使用:请注意,此测试大于 或等于 30,否则
my_list1
也不会通过测试。如果您想在函数中执行此操作,您可以使用:
例如,一旦你找到一个值证明有 一个 值低于 30,你就返回
False
,如果你没有发现相反的证据,则返回True
。同样,您可以使用
any()
函数 来测试是否 至少有 1 个 值与条件匹配。