使用while迭代带有条件的列表?

1 python list while-loop

我试图遍历一个素数列表,但是当我达到一定限度时我想停止.

def primetest(number,primelst):
    limit = int(round(sqrt(number),0)+1)
    while prime in primelst < limit:
        if (number % prime) == 0:
            return False
    return True
Run Code Online (Sandbox Code Playgroud)

作为FOR语句,这有效:

def primetest(number,primelst):
    limit = int(round(sqrt(number),0)+1)
    for prime in primelst:
        if (number % prime) == 0:
            return False
    return True
Run Code Online (Sandbox Code Playgroud)

但这很慢,因为它遍历所有素数,我希望迭代在达到极限时停止.所以while声明似乎是一个更好的选择,但我无法弄清楚正确的语法.

csl*_*csl 5

只需在循环体中添加一个检查:

for prime in primelst:
    if prime > limit:
        break
    # ...
Run Code Online (Sandbox Code Playgroud)

更新:我最初建议使用enumerate,但我发现你真的想在素数大于时停止循环limit.