2017-07-17 107 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时才将字符串元素更改回自己? –