gpt4 book ai didi

python - 生成器表达式和 Any/All 的意外结果

转载 作者:行者123 更新时间:2023-12-02 16:35:38 25 4
gpt4 key购买 nike

我在计算生成器表达式时遇到了一个奇怪的问题。

我的代码有一个生成器表达式来测试一些条件。我们称它为“gen_ex”。如果我把它变成一个列表来查看输出:

print(list(gen_ex))

我明白了:

[False, False, False, False, True, True, False, False, False]

但是,当我对其使用 any() 和 all() 时,我得到了意想不到的结果。

any(gen_ex)

返回 False,同时:

all(gen_ex)

返回真。

这应该是预期的行为吗?或者幕后发生了什么奇怪的事情?

最佳答案

生成器不能迭代多次。第一次调用list消耗所有值。

>>> gen_ex = (x for x in (1,2,3))
>>> list(gen_ex)
[1,2,3]
>>> list(gen_ex)
[]

因此,anyall也看到一个空的值序列。您看到的返回值是基本情况:

  • any([])False因为列表中没有 True 元素(即,参数中的元素计算为 True 不是真的)
  • all([])True因为列表中没有 False 元素(即,列表中的每个元素都是 True 是真的,因为没有没有元素)

关于python - 生成器表达式和 Any/All 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62762809/

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