2017-07-17 106 views
1

我只是需要一個功能,消除零從輸入列表從列表中刪除零的函數?

def no_zero(a): 
    pos=0 
    while (pos+1)<=len(a): 
     if a[pos] == "0": 
      a.remove[pos] 
     pos= pos +1 
    return a 

print(no_zero([0,1,0,2,0,3])) 

我應該得到的1,2,3的輸出,而是它跳過有權返回。任何指針爲什麼?乾杯。

回答

3

您可以使用list comprehension

def no_zero(a): 
    return [x for x in a if x != 0] 
print(no_zero([0,1,0,2,0,3])) 

此外,你的代碼目前不工作的原因是因爲你是比較的項目,而不是一個整數(0)的字符串("0")。您也試圖在遍歷它時修改列表,這意味着您的索引與列表的原始索引不相符,並且結果將是錯誤的。

+0

同時將pos傳遞給'remove()',它需要一個值。 –

+0

那麼這條線說什麼?只有在不等於0時纔將字符串元素更改回自己? –