无法从 python 列表中完全删除零

我有两个清单


x=[0.0, -0.9000000000000199, 2.1499999999999773, 1.799999999999983, -1.5000000000000284, -2.3500000000000227, -3.05000000000004, 2.0999999999999943, 3.9999999999999716, 1.8499999999999943, -4.650000000000006, 11.349999999999994]

y=[-5.750000000000028, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

我使用下面的逻辑来完全删除零。但 y 的零并未完全删除。


for i in x:

    if i==0:

        x.remove(i)


for j in y:

    if j==0:

        y.remove(j)

        

print(x)

print(y)

我得到的输出如下,即我的 y 列表中仍然有零。


[-0.9000000000000199, 2.1499999999999773, 1.799999999999983, -1.5000000000000284, -2.3500000000000227, -3.05000000000004, 2.0999999999999943, 3.9999999999999716, 1.8499999999999943, -4.650000000000006, 11.349999999999994]

[-5.750000000000028, 0.0, 0.0, 0.0, 0.0, 0.0]


绝地无双
浏览 101回答 3
3回答

慕田峪7331174

迭代列表时不应从列表中删除元素。相反,使用列表理解:x=[e for e in x if e] y=[e for e in y if e]

慕慕森

“remove”方法仅删除第一次出现的提供值:def remove(self, *args, **kwargs): # real signature unknown    """    Remove first occurrence of value.        Raises ValueError if the value is not present.    """    pass要从列表中删除所有值,您可以使用以下小方法:def remove_all_values_from_list(l, val):    for i in range(l.count(val)):        l.remove(val)输出:[-0.9000000000000199, 2.1499999999999773, 1.799999999999983, -1.5000000000000284, -2.3500000000000227, -3.05000000000004, 2.0999999999999943, 3.9999999999999716, 1.8499999999999943, -4.650000000000006, 11.349999999999994][-5.750000000000028]

慕的地10843

尝试使用 y = [i for i in y if i != 0]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python