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

X-B*_*... 0 python python-3.x

我试图遍历一个函数返回的整数列表。

问题:我想检查列表中的任何元素是否大于特定值(95),然后一次执行一次语句,而不是每次迭代,即遍历列表,即使有更多元素,也要检测大于95的数字,然后执行该语句。

我已经尝试过,但该语句在满足条件的次数不停地执行

这是我正在尝试的代码

for path in Path(spath).iterdir():
    for n in cosine_sim(file, path):
        x = all(n)
        if x > 95:
            print("suceess...")
Run Code Online (Sandbox Code Playgroud)

success...打印多次

Gre*_*Guy 8

Python具有内置功能,可以大致满足您的需求:

  • any(iterable)如果从至少一个元件返回true iterable是truthy
  • all(iterable)如果来自的每个元素iterable均为真,则返回true

考虑到这一点,一般的习惯用法是检查列表中每个元素的条件,然后在其中使用all()any()

for n in cosine_sim(file, path):
    if all(x > 95 for x in n):
        print("success...")
Run Code Online (Sandbox Code Playgroud)

这可能比您想要的要慢一些,因为它实际上必须x > 95为每个计算x。例如,如果您要确保列表中的每个数字nums都不等于零,或者确保其中没有任何字符串strs为空,则可以只使用all(nums)all(strs)-,因为数字为0,并且空字符串都评估为false,因此您不必先将它们转换为布尔值。