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

时间:2017-04-11 15:25:13

标签: 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

作为FOR语句,这有效:

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

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

2 个答案:

答案 0 :(得分:5)

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

for prime in primelst:
    if prime > limit:
        break
    # ...

更新:我最初建议使用enumerate,但我发现当素数大于limit时,您确实想要停止循环。

答案 1 :(得分:1)

如果你坚持使用while,有这种方法可以循环你的情况:

;