gpt4 book ai didi

python - 此输入如何与 Python 'any' 函数一起使用?

转载 作者:IT老高 更新时间:2023-10-28 21:09:24 25 4
gpt4 key购买 nike

any 的 python 文档页面中,any() 函数的等效代码如下:

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

如果以这种形式调用它,这个函数如何知道我想测试什么元素?

any(x > 0 for x in list)

从函数定义中,我只能看到我正在传递一个可迭代对象。 for 循环如何知道我在寻找什么东西 > 0

最佳答案

如果您使用 any(lst)你看 lst是可迭代的,它是一些项目的列表。如果它包含 [0, False, '', 0.0, [], {}, None] (它们都有 False 的 bool 值)然后 any(lst)将是 False .如果 lst还包含以下任何 [-1, True, "X", 0.00001] (所有这些评估为 True )然后 any(lst)将是 True .

在您发布的代码中,x > 0 for x in lst ,这是一种不同的可迭代对象,称为生成器表达式。在将生成器表达式添加到 Python 之前,您应该创建了一个 列表推导,它看起来非常相似,但周围有 []的:[x > 0 for x in lst] .来自 lst包含 [-1, -2, 10, -4, 20] ,你会得到这个理解列表:[False, False, True, False, True] .然后这个内部值会被传递给 any函数,它将返回 True , 因为至少有一个 True值(value)。

但是有了生成器表达式,Python 不再需要创建True(s) 的内部列表。和 False(s) ,值将生成为 any函数遍历生成器表达式一次生成的值。 并且,因为 any短路,它会在看到第一个 True 时立即停止迭代值(value)。如果您创建了 lst,这将特别方便。使用类似 lst = range(-1,int(1e9)) (或 xrange 如果您使用的是 Python2.x)。尽管此表达式将生成超过十亿个条目,any当它到达 1 时,只需要一直到第三个条目。 , 计算 True对于 x>0 ,等等any可以返回True .

如果您创建了一个列表理解,Python 将首先必须在内存中创建十亿个元素的列表,然后将其传递给 any .但是通过使用生成器表达式,您可以拥有 Python 的内置函数,如 anyall早点爆发,尽快TrueFalse值(value)可见。

关于python - 此输入如何与 Python 'any' 函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16505456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com