我试图使用lambda函数获取Python中低于2,000,000的所有素数的总和。 (我已经对其进行了暴力破解,但是这花费了太多时间,并且我想要一个更好的解决方案。)到目前为止,这是我所拥有的:

def isPrime(n):
    for x in range(2, int(n**0.5)+1):
        if n%x==0: return False
    return True


print reduce(lambda x: isPrime(x), [range(200)])


现在,这只是打印从1到200递增的数字,所以我不认为reduce起作用= \

有人有提示吗?

最佳答案

您的代码中发生了一些奇怪的事情。


我认为您实际上是想使用filter(),而不是reduce()
lambda x: isPrime(x)等效于isPrime(毕竟,isPrime已经是一个返回isPrime结果的函数)。
[range(200)]创建一个嵌套列表。外部列表中的唯一元素是数字从0到200的列表。我认为您只需要一个列表。


因此,请尝试以下操作:

print filter(isPrime, range(200))

关于python - Python:获取Lambda函数的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15421534/

10-13 03:25