Zero still in list after deletion (Python) 删除后,列表中仍然存在零(Python)
Zero still in list after deletion (Python) 删除后,列表中仍然存在零(Python)
我有一个下面的Prob列表,当我尝试删除0或删除0.0时,有时它不会从列表中删除,或者列表中仍然存在'another version'的0。我该如何确保从列表中删除所有'flavors'的零,因为不可能列出所有可能的零的小数增量呢?
x = [0.0, 0.0, 0, 0.0009765625, 0.0003255208333333333, 0.0021158854166666665, 0.005045572916666667, 0.013020833333333334, 0.019856770833333332, 0.0107421875, 0.004557291666666667, 0.000] if 0 in probability_perpoint: probability_perpoint.remove(0) if 0.0 in probability_perpoint: probability_perpoint.remove(0.0) print(x) # 仍然打印出0!
问题的原因是在使用Python的filter函数时,删除列表中的零值后,零值仍然存在于列表中。解决方法是将结果转换为列表。
在Python中,filter函数非常适合解决这个问题。您可以将筛选条件以匿名lambda函数的形式作为第一个参数,并将要筛选的列表作为第二个参数。
下面是一个示例代码:
x = [0.0, 0.0, 0, 0.0009765625, 0.0003255208333333333, 0.0021158854166666665, 0.005045572916666667, 0.013020833333333334, 0.019856770833333332, 0.0107421875, 0.004557291666666667, 0.000] result = list(filter(lambda n: n!=0, x)) print(result)
请注意,您必须将结果转换为列表。
在Python中,有时候我们需要从列表中删除特定的元素,但是在删除后,有时会发现元素仍然存在于列表中,这可能会导致程序出现错误。以下是解决这个问题的两种方法。
第一种方法是使用列表推导式。我们可以通过使用列表推导式来创建一个新列表,其中排除了等于0的元素。具体代码如下:
x = [0.0,0.0,0,0.0009765625,0.0003255208333333333,0.0021158854166666665,0.005045572916666667,0.013020833333333334,0.019856770833333332,0.0107421875,0.004557291666666667,0.000] x = [i for i in x if i != 0] print(x)
执行以上代码后,输出结果将不再包含0。
第二种方法是使用`remove()`函数和`while`循环。我们可以使用`remove()`函数将所有等于0的元素从列表中删除,直到无法再找到等于0的元素为止。具体代码如下:
x = [0.0,0.0,0,0.0009765625,0.0003255208333333333,0.0021158854166666665,0.005045572916666667,0.013020833333333334,0.019856770833333332,0.0107421875,0.004557291666666667,0.000] try: while True: x.remove(0) except ValueError: pass print(x)
执行以上代码后,输出结果同样不再包含0。
你可以在以下链接中查看代码的演示:
- [列表推导式方法演示](https://rextester.com/NAVN53491)
- [remove()和while循环方法演示](https://rextester.com/YTXM11780)
以上就是解决在删除后仍然存在于列表中的元素的问题的两种方法。无论你选择哪种方法,都能够有效地从列表中删除指定的元素。