likes
comments
collection
share

Python 中 any() 和 all() 的区别前言 这段时间看开源项目源码时,又看到了all()函数,还有一个内

作者站长头像
站长
· 阅读数 73

前言

这段时间看开源项目源码时,又看到了all()函数,还有一个内置函数any() 。这篇 文章就探讨清除这两个函数的区别。

any()

该函数接受一个可迭代对象作为参数

  • 如果该对象中至少有一个元素为 True ,则返回 True
  • 如果所有元素均为 False ,则返回 False
  • 如果可迭代对象为空, any() 返回 False

语法:

any(iterable)

示例:

print(any([0, False, None]))  # 输出: False
print(any([0, 1, False]))     # 输出: True
print(any([]))                # 输出: False
print(any([""]))              # 输出: False,空字符串在布尔上下文中被视为False

all()

该函数也接受一个可迭代对象作为参数,但它的返回值与 any() 相反。

  • 如果可迭代对象中的所有元素都是 True ,则返回 True
  • 如果有任何一个元素为 False ,则返回 False
  • 同样地,空的可迭代对象会返回 True

语法:

all(iterable)

示例:

print(all([1, 2, 3]))         # 输出: True
print(all([0, 1, 2]))         # 输出: False
print(all([]))                # 输出: True,空集合被认为是“所有条件都满足”
print(all([1, 0, False]))     # 输出: False

使用场景

any() 的使用场景

  • 检查条件是否成立 :当你需要验证多个条件中是否至少有一个满足时,使用 any() 非常合适。例如,检查用户输入的多个字段是否至少有一个非空。
username = ""
password = "pass123"
if any([username, password]):
    print("至少有一个字段不为空")

all() 的使用场景

  • 确保所有条件都满足 :当你需要确认所有条件都成立时,使用 all() 是最佳选择。例如,在数据验证时,确保所有必填字段都有值。
name = "Alice"
age = 30
email = "alice@example.com"
if all([name, age, email]):
    print("所有字段都已填写")

性能考虑

虽然 any() 和 all() 的时间复杂度都是 O(n),但它们的实现方式略有不同。 any() 一旦找到第一个为 True 的元素就会停止遍历,而 all() 则会在发现第一个为 False 的元素时停止。这使得在某些情况下, any() 和 all() 的性能表现会有所不同,具体取决于可迭代对象的内容。

最后

any() 和 all() 在 Python 中都是非常强大的工具,用于处理布尔逻辑的条件判断。理解它们的区别和适用场景,可以帮助我们写出更清晰、简洁的代码。在实际开发中,合理利用这两个函数,可以提升代码的可读性和效率。

转载自:https://juejin.cn/post/7419340569275596819
评论
请登录