从列表中删除零的功能?

时间:2017-07-17 16:25:49

标签: python-3.x

我只需要一个从输入列表中删除零的函数

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的输出,但它跳过正确返回a。任何指针为什么?欢呼声。

1 个答案:

答案 0 :(得分:5)

您可以使用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)进行比较。您还尝试在迭代时修改列表,这意味着您的索引不对应于列表的原始索引,并且您的结果将是错误的。