簡體   English   中英

列表理解而不是嵌套for循環和ifs

[英]List comprehension instead of nested for loop and 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))]

一種簡單的(但不是非常有效的)列表理解方法如下:

primefactors = [n for n in range(2,num) if num%n==0 and all(n%f for f in range(2,n))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM