在filter方法中使用带lambda的for循环?

时间:2017-04-28 12:09:05

标签: python loops lambda

a = [ ]

for i in range(int(input())):
   a.append(int(input()))

print(max(filter(lambda x: x%i != 0 for i in range(2,x), a)))

这是一个旨在打印数字数组中最大素数的代码。但shell不断返回语法错误。这有什么问题?

1 个答案:

答案 0 :(得分:0)

您的lambda表达式返回一个生成器表达式。您希望它测试True次迭代的条件是all。您需要all

此外(更多数学问题),无需循环到x,只需使用平方根(包括)来降低复杂性。

我的建议:

print(max(filter(lambda x: all(x%i != 0 for i in range(2,int(x**0.5)+1)), a)))