我试图使用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/