2011-02-14 34 views
1

所以這個函數輸入一個列表和一個數字。然後它應該返回數字能夠被除以的列表的索引。如果列表中沒有數字,則可以將其除以,然後它應該返回一個空白列表。如何獲得給定數字的因數列表?

例如,

div([5,10,15,2,34],10) 
[0,1,3] 

這裏是我的編碼:

def div(nlst, n): 
    nlst = [] 
    for div in nlst: 
     if n % nlst == 0: 
     return nlst.index(div) 
     else: [] 

什麼是錯我的代碼?

+0

你的問題是什麼? – vz0 2011-02-14 02:20:58

回答

1

有在你的代碼的幾個問題:

def div(nlst, n): 
    nlst = [] # You are deleting the original list here! 
    for div in nlst: # The list nlst is empty 
     if n % nlst == 0: # Cannot use a list 'nlst' as an operand of the % operation. 
     return nlst.index(div) # You are returning a single element here 
     else: [] # This does nothing 

此代碼將做的工作:

def div(nlst, n): 
    result = [] 
    for i, e in enumerate(nlst): 
     if n % e == 0: 
      result.append(i) 
    return result 

一個更緊湊的版本:

def div(nlst, n): 
    return [i for i, e in enumerate(nlst) if n % e == 0] 
1

列表理解到營救:

def div(nlst, n): 
    return [i for i,v in enumerate(nlst) if n % v == 0] 

>>> div([5,10,15,2,34], 10) 
[0, 1, 3] 
相關問題