2016-03-04 61 views
1

我想知道是否有人如何在Python中做這個問題? 編寫一個同時包含列表(myList)和值(n)的函數,並檢查值是否在該列表中。如果該值確實存在於列表中,請將其替換爲值「1」。你的函數應該返回更新的列表。使用函數簽名:def replaceNum(myList,n):一個函數,需要一個列表(myList)和一個值(n),並檢查值是否在該列表中

示例:如果函數的輸入是replaceNum([12,6,10,10],10),函數將返回一個帶[12, 6,1,1]。

我有這個迄今爲止

def replaceNum(myList,n): 
    new_list = [] 
    for i in range(0, len(myList)): 
     if i == n: 
      myList[n] = 1 
      new_list.append(i) 

     return myList[i] 
print(replaceNum([5, 10, 20], 10)) 

,但只打印5,我需要它來打印[5,1,20]

回答

1

爲此,您可以用list comprehension。該函數遍歷每個元素myList1代替它,如果它等於n

def replaceNum(myList, n): 
    return [x if x != n else 1 for x in myList] 

print(replaceNum([5, 10, 20], 10)) 

輸出

[5, 1, 20] 
+1

感謝的人,那不是我在做什麼哈哈簡單得多。 – ZAMUEL123

+0

它不會讓我投票呢,即時消息到新的我猜haha – ZAMUEL123

+0

@ ZAMUEL123我認爲你需要15聲望才能投票 – gtlambert

0

要着力修復代碼。

其中一個主要問題是你在循環中返回。不僅如此,而且您只返回myList中的單個項目。

相反,你應該做的是設置你的for循環,使用for i, v enumerate(myList)迭代你的索引和值,然後在找到匹配時更改值。

像這樣:

def replaceNum(myList,n): 
    for i, v in enumerate(myList): 
     if v == n: 
      myList[i] = 1 
    return myList 
print(replaceNum([5, 10, 20], 10)) 

然後進一步優化,看gtlambert's答案

相關問題