gpt4 book ai didi

Python reduce 函数混淆

转载 作者:行者123 更新时间:2023-11-28 21:55:21 25 4
gpt4 key购买 nike

我试图了解 python reduce 内置方法的工作原理,因此尝试了一些我能想到的简单示例。但这是一个我不太明白的例子,如果有人能在这里给我一些提示,我将不胜感激。

所以我有一个数组,其中有几个像这样的素数

>>> arr
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]

我尝试像这样使用 reduce 函数

>>> reduce(lambda x, y: is_prime(x) and is_prime(y), arr)
False

我不太明白为什么这里的答案是 False 而不是 True,因为我正在计算 is_prime 的所有答案并且数组中的所有数字都是质数,这将为每个 is_prime 返回 True。

我还检查了数组中的每个数字实际上都为我的 is_prime() 返回了 True

>>> for n in arr:
... if not is_prime(n):
... print n
...
>>>

我一定是遗漏了什么,有人能帮忙吗?谢谢。

最佳答案

考虑一下您要逐个减少的值:

>>> reduce(lambda x,y: isprime(x) and isprime(y), [2])
2

只有一个元素,所以 reduce 给了我们第一个。

>>> reduce(lambda x,y: isprime(x) and isprime(y), [2, 3])
True

有道理:两者都是质数。

>>> reduce(lambda x,y: isprime(x) and isprime(y), [2, 3, 5])
False

这个看起来很奇怪,但这是因为你实际上在调用

isprime(True) and isprime(5)

因为 True 是最后一个值,而 Trueint 值为 1:

>>> int(True)
1

减少 != 全部

关于Python reduce 函数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765750/

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