python - 列表理解而不是嵌套的 for 循环和 ifs
问题描述
我想编写一个等效于嵌套 for 循环和条件的列表理解
我试着写
lst.append(i,j for i in range(2,num) for j in range(2,i) if num%i==0 if i%j!=0)
这给了我错误:
生成器表达式必须带括号
我也试过
lst=[(i,j) for i in range(2,num) for j in range(2,i) if num%i==0 if i%j!=0]
这不会引发错误,但我没有得到想要的结果
num=int(input("Enter a number:"))
lst=[]
for i in range(2,num):
if num%i!=0:
continue
else:
isprime=False
for j in range(2,i):
if i%j==0:
isprime=True
break
if not isprime:
lst.append(i)
for ele in lst:
print(ele)
该程序将给出输入数字的主要因素
解决方案
如果您希望准确复制那里的内容,可以尝试以下操作:
lst = [i for i in range(2, num) if num % i == 0 and all(i % j for j in range(2, i))]
虽然它没有那么有效,因为它缺乏打破的能力。
如果您希望通过列表理解来查找所有素数,那么这不是一个坏方法:
lst = [x for x in range(2, num) if all(x % y != 0 for y in range(2, int(x ** 0.5) + 1))]
推荐阅读
- c++ - 模板推导和隐式构造函数
- google-chrome - Chromium 和 webmidi:平台相关初始化失败
- python - 如何使用Python从pdf中提取的文本中计算列表中的单词数?
- javascript - Filepond + Pintura Vue 2 将 SVG 转换为 PNG
- php - 如果类别在 Laravel 中没有子类别,则删除图标箭头
- c++ - 检查我在重载运算符中传递和返回的内容
- spring-boot - @StreamListener 不提供 Acknowledgement 标头,即使在 Spring Cloud 中自动提交设置为 false
- css - Atom 中突出显示的文本颜色
- python - 具有多个会话的 SQLAlchemy,如何避免“对象已附加到会话 X”?
- xml - Toast 通知 - 打开链接上带有特定字符的网页