微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在列表理解中使用带有for循环的break和else条件语句

如何解决在列表理解中使用带有for循环的break和else条件语句

如何根据条件打破列表理解中的循环并在其后使用else块?

这是我想在列表理解中转换的代码

x=int(input("Enter a number : "))

for i in range(2,x+1):
    for j in range(2,i):
        if i%j==0:
            break
    else:
        print(i)

#this program prints all prime numbers upto x. 

我的尝试:

x=int(input())

def end_loop():
    raise stopiteration
    
prime=list(i for i in range(2,x+1) for j in range(2,i) end_loop() if i%j==0 )

print(prime)

输出

SyntaxError

必需的输出

All prime numbers upto x

我更喜欢:

⏺️One班轮

⏺️Purepython

解决方法

技巧是考虑for循环要检查的条件,然后考虑表达它的不同方式。在这种情况下,循环正在测试以查看i值中的any是否可被j整除:

print([
    i for i in range(2,int(input("Enter a number : ")) + 1)
    if not any(i % j == 0 for j in range(2,i))
])

请注意,您只能说not any(i % j == 0 ...而不是all(i % j ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。