[英]checking if all elements in a list satisfy a condition
我试图遍历一个函数返回的整数列表。
问题:我想检查列表中的任何元素是否大于特定值(95),然后一次执行一次语句,而不是每次迭代,即遍历列表,即使有更多元素,也要检测大于95的数字,然后执行该语句。
我已经尝试过,但该语句在满足条件的次数不停地执行
这是我正在尝试的代码
for path in Path(spath).iterdir():
for n in cosine_sim(file, path):
x = all(n)
if x > 95:
print("suceess...")
success...
打印多次
Python具有内置功能,可以大致满足您的需求:
any(iterable)
如果从至少一个元件返回true iterable
是truthy iterable
每个元素都是真实的,则all(iterable)
返回true 考虑到这一点,一般的习惯用法是检查列表中每个元素的条件,然后在其上使用all()
或any()
:
for n in cosine_sim(file, path):
if all(x > 95 for x in n):
print("success...")
这可能比您想要的要慢一些,因为它实际上必须为每个x
计算x > 95
。 如果你在想,说,做一个情况是肯定列表中的所有号码nums
不等于零,或者确保在没有字符串strs
是空的,你可以只使用all(nums)
或all(strs)
-由于数字0和空字符串都计算为false,因此您不必先将它们转换为布尔值。
您还可以使用以下命令:
your_list=[123,232,121,100,98]
if any(i > 95 for i in your_list):
print("success...")
扩展绿色披风家伙的答案,增加break
for path in Path(spath).iterdir():
for n in cosine_sim(file, path):
if all(int(x) < 95 for x in n):
print("suceess...")
break
break
两次break
因为有两个循环...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.