[x for x in range(1,100) if all(x%y for y in range(2,x))]
无法理解上面的代码如何返回正确的结果,而应该是
[x for x in range(1,100) if all(x%y!=0 for y in range(2,x))]
原因是,如果只有一个条件为True
,则全部为True
。
答案 0 :(得分:4)
在布尔上下文中,非零整数被认为是真实的,因此代码片段是等效的。
请注意,此算法会错误地将1
归类为素数。