我有两个清单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]
3 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
迭代列表时不应从列表中删除元素。相反,使用列表理解:
x=[e for e in x if e] y=[e for e in y if e]
慕慕森
TA贡献1856条经验 获得超17个赞
“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]
添加回答
举报
0/150
提交
取消