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

新手上路,请多包涵

我正在尝试遍历函数返回的整数列表。

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

我已经尝试过,但该语句会继续执行满足条件的次数

这是我正在尝试的代码

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

success... 多次打印

原文由 X-Black… 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 596
2 个回答

扩展 绿色斗篷人 的答案,加上 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 因为有两个循环…

原文由 X-Black… 发布,翻译遵循 CC BY-SA 4.0 许可协议

Python 的内置函数大致可以满足您的需求:

  • any(iterable) 如果来自 iterable 的至少一个元素为真,则返回真
  • all(iterable) 如果来自 iterable 的每个元素都是真实的,则返回真

考虑到这一点,一般习惯用法是检查列表中每个元素的条件,然后在其上使用 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,所以您不必先将它们转换为布尔值。

原文由 Green Cloak Guy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题