首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用with来迭代具有条件的列表吗?

使用with来迭代具有条件的列表吗?
EN

Stack Overflow用户
提问于 2017-04-11 15:25:12
回答 2查看 55关注 0票数 1

我试图迭代一个素数的列表,但是当我达到一定的极限时,我想停止。

代码语言:javascript
复制
def primetest(number,primelst):
    limit = int(round(sqrt(number),0)+1)
    while prime in primelst < limit:
        if (number % prime) == 0:
            return False
    return True

作为一个声明,这是有效的:

代码语言:javascript
复制
def primetest(number,primelst):
    limit = int(round(sqrt(number),0)+1)
    for prime in primelst:
        if (number % prime) == 0:
            return False
    return True

但这是缓慢的,因为它遍历all (素数),在这里,当它达到极限时,我希望迭代停止。因此,while语句似乎是一个更好的选择,但我无法找到正确的语法。

EN

回答 2

Stack Overflow用户

发布于 2017-04-11 15:26:33

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

代码语言:javascript
复制
for prime in primelst:
    if prime > limit:
        break
    # ...

Update:我最初建议使用enumerate,但是当素数大于limit时,您实际上希望停止循环。

票数 5
EN

Stack Overflow用户

发布于 2017-04-11 15:36:09

如果您坚持使用while,则有一种循环使用在您的情况下可能有效的方法:

代码语言:javascript
复制
def primetest(number,primelst):
    i=0
    limit = int(round(sqrt(number),0)+1)
    while primelst[i] < limit:
        if (number % primelst[i]) == 0:
            return False
        i=i+1
    return True
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43350162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档