2013-08-25 80 views
-1

以下是代碼。Python列表中填有重複項

x=0 
result=[] 
for n in range(1,5): 
    x=x+n; 
    for i in range(1,10): 
     if x%i==0: 
      result.append(i)  
      print(x,result) 

在這裏,我已經產生三角numbers.I要找到每個三角形number.but的除數當我執行我得到以下輸出的代碼。

1 [1] 
3 [1, 1] 
3 [1, 1, 3] 
6 [1, 1, 3, 1] 
6 [1, 1, 3, 1, 2] 
6 [1, 1, 3, 1, 2, 3] 
6 [1, 1, 3, 1, 2, 3, 6] 
10 [1, 1, 3, 1, 2, 3, 6, 1] 
10 [1, 1, 3, 1, 2, 3, 6, 1, 2] 
10 [1, 1, 3, 1, 2, 3, 6, 1, 2, 5] 

而且相同的三角形數量重複幾個times.So我需要輸出的樣子,

1 [1] 
3 [1, 3] 
6 [1, 2, 3, 6] 
10 [1, 2, 5] 

我怎樣才能得到這樣的輸出?謝謝。

+1

當你走的時候,你不清楚'x'和'result',不確定這是否是你試圖達到目標的方式,但也許在某個時候重置它會有幫助。 –

回答

3

您正在循環中追加到相同的result列表。您應該在外部循環中創建一個新的result列表。並且您的打印語句被錯誤地縮進。將它移到內部循環之外。

你的代碼應該是:

x=0 
for n in range(1,5): 
    x=x+n; 
    result = [] 
    for i in range(1,10): 
     if x%i==0: 
      result.append(i)  
    print(x,result) 

輸出:

1 [1] 
3 [1, 3] 
6 [1, 2, 3, 6] 
10 [1, 2, 5] 
+0

我認爲打印應該在IN中,但不在if if –

+1

@ Ofek.T ..不,因爲那樣它會打印多個時間列表中的相同'x'。 –

0

要找到一些除數您可以使用此功能

def divisors(n): 
    divisors=[] 
    for i in range(1,int(n**0.5)+1): 
     if n%i == 0: 
      divisors.extend((i,n/i)) 
    return list(set(divisors)) 

,如果你發現了一些我可以劃分一個數字n,n和n/i都成爲除數。 唯一的問題將是完美的平方數,其根將被添加兩次(如果我成爲n的根,n/i和i是相等的並且兩者都將被添加到列表中)。 由set()函數解決。