Python any()函数高级技巧

本文介绍了Python的any()函数在处理list、tuple和dict时的用法,强调了其短路优化特性,展示了在for循环中使用any()的示例,帮助读者深入理解并掌握这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 内置的 any(x) 函数接受一个可迭代的元素 x 作为参数,如 list、元组或字典。如果在iterable中至少有一个元素使用隐式布尔转换计算为True,它返回True,否则返回False。如果iterable是空的,例如,any([]),它返回False,因为任何元素都不满足条件。

list 的any()函数举例

下面的代码显示了如何在不同的列表上使用any()函数。

# 布尔型列表,含假值 False 
print(any([True, False, True, True]))
# True

# 没有False值的布尔列表
print(any([True, True]))
# True

# 包含0值的整数列表
print(any([1, 2, -1, 0]))
# True

# 不含0值的整数列表
print(any([1, 2, -1]))
# True

# 嵌套式列表,内部为空列表
print(any([[], [1, 2, 3]]))
# True

# 嵌套列表,有两个空的内部列表
print(any([[], []]))
# False

# 空列表
print(any([]))
# False


元组Tuples的any()函数举例

如果你在元组上使用any()函数,它将返回一个布尔值,表示所有元组元素是否都计算为True。

print(any((1, 2, 3)))
# True

print(any((0, 0, 0)))
# False

print(any((False, 2==3, -1)))
# True

print(any((True, 3, 1!=1)))
# True


字典的any()函数举例

字典上的any()函数检查 keys(而不是values)的迭代,是否至少有一个 keys 的值为True,如果是,返回值为True,否则为False。否则为False。

d = {'': 10000,
     0: 5000,
     tuple(): 0}
print(any(d))
# False
d['x'] = 100000
print(any(d))
# True


进阶知识点

短路优化

根据Python的官方文档,该any()函数在语义上等效于以下代码片段:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

因此,它将遍历迭代表中的所有元素,并使用元素作为if条件来检查它的值是True还是False,一旦检测到一个True元素,它就会中止循环并返回True。这是一种叫做短路的优化,它意味着只对第一个True值进行评估!


带For循环的Python any()函数

你也可以使用生成器表达式动态地创建一个迭代,并将其传递到 any() 函数中。这可以称为 “带有for循环的any()函数”。

print(any(x**2 == 16 for x in range(10)))
# True

上面举例代码使用的条件是x**2==16,它只对x=4有效。当你通过使用range()函数将这个表达式应用于从0到9(包括)的所有x值时,它大多返回False。由于短路,any()函数在评估第五个元素x=4后返回True。


最后

希望阅读完整篇文章后,你可以轻松地运用python any()内置函数



订阅继续关注,以后会收到更多有趣的文章。

本文为“一个火星程序员”原创文章,转载请标明出处
原文链接:https://blog.csdn.net/machial/article/details/110679408

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个火星程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值