创建素数列表的简单尝试
l = []
r = []
q = [2,3,5,7,11,13,17,19,23]
for x in range(200):
l.append(x)
for y in l:
for p in q:
if y % p > 0:
r.append(y)
print r
所有人都可以看到这是一个失败,因为在进入下一行之前,条件y%p未在q的所有p值上进行测试。
问题 - 在进入下一行之前,如何测试q中所有p值的条件y%p。
答案 0 :(得分:0)
检查all
function:
如果iterable的所有元素都为true(或者iterable为空),则返回True。
例如:
>>> y=25
>>> all(y%p>0 for p in q)
False
>>> y=29
>>> all(y%p>0 for p in q)
True
在你的例子中:
>>> l=range(2,200)
>>> r=[]
>>> for y in l:
... if all(y%p for p in q):
... r.append(y)
...
>>> r
[29, 31, 37, 41, 43, 47, 53, ...]