【Python】any()和all()内置函数深度解析

any()  all() 是 Python 中的两个内置函数,用于处理可迭代对象(如列表、元组、集合等)。它们通常用于判断可迭代对象中的元素是否满足某些条件。


一、any()——用于判断可迭代对象中是否至少有一个元素为 True

  • 如果可迭代对象中至少有一个元素为 Trueany() 返回 True

  • 如果可迭代对象为空,any() 返回 False

  • # 示例 1: 列表中至少有一个元素为 True
    print(any([False, True, False]))  # 输出: True
    
    # 示例 2: 列表中所有元素都为 False
    print(any([False, False, False]))  # 输出: False
    
    # 示例 3: 空列表
    print(any([]))  # 输出: False
    
    # 示例 4: 列表中包含非布尔值
    print(any([0, 1, 2]))  # 输出: True (因为 1 和 2 被视为 True)

    二、all()——用于判断可迭代对象中的所有元素是否都为 True

  • 如果可迭代对象中的所有元素都为 Trueall() 返回 True

  • 如果可迭代对象为空,all() 返回 True

  • # 示例 1: 列表中所有元素都为 True
    print(all([True, True, True]))  # 输出: True
    
    # 示例 2: 列表中至少有一个元素为 False
    print(all([True, False, True]))  # 输出: False
    
    # 示例 3: 空列表
    print(all([]))  # 输出: True
    
    # 示例 4: 列表中包含非布尔值
    print(all([1, 2, 3]))  # 输出: True (因为所有元素都被视为 True)
    print(all([1, 0, 3]))  # 输出: False (因为 0 被视为 False)

    三、特殊例子

  • 3.1 any() 和 all() 与空可迭代对象

  • any([]) 返回 False,因为没有任何元素为 True

  • all([]) 返回 True,因为没有任何元素为 False

  • 3.2 any() 和 all() 与非布尔值

  • any() 和 all() 会将非布尔值转换为布尔值进行判断。例如,0None、空字符串 ""、空列表 [] 等被视为 False,而其他值被视为 True

  • # 示例 1: 非布尔值
    print(any([0, None, ""]))  # 输出: False (所有元素都被视为 False)
    print(any([0, 1, ""]))     # 输出: True (1 被视为 True)
    
    print(all([1, 2, 3]))      # 输出: True (所有元素都被视为 True)
    print(all([1, 0, 3]))      # 输出: False (0 被视为 False)

  • 四、总结

  • any() 用于判断可迭代对象中是否至少有一个元素为 True

  • all() 用于判断可迭代对象中的所有元素是否都为 True

  • 这两个函数都可以处理非布尔值,并且可以与生成器表达式结合使用以提高效率。

  • 在处理空可迭代对象时,any() 返回 False,而 all() 返回 True

  • 作者:开心耶耶

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python】any()和all()内置函数深度解析

    发表回复