从列表中删除零的功能?

Ale*_*scu 1 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]))
Run Code Online (Sandbox Code Playgroud)

我应该得到1,2,3的输出,但是它会跳过正确的返回a。关于为什么的任何指示?干杯。

Eri*_*ard 5

您可以使用列表推导

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

此外,您的代码当前无法正常运行的原因是,您正在将项目与字符串("0")而不是整数(0)进行比较。您还尝试在迭代列表时修改列表,这意味着您的索引与列表的原始索引不对应,并且结果将是错误的。