繁体   English   中英

检查列表中的所有元素是否满足条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM