我在Prob下面有一个列表,当我尝试删除0或删除0.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]
if 0 in probability_perpoint:
probability_perpoint.remove(0)
if 0.0 in probability_perpoint:
probability_perpoint.remove(0.0)
`print(x)` # still prints 0's!
只要用
list comprehension
这样做演示:https://rextester.com/NAVN53491
用
remove()
和while
的另一种方式演示:https://rextester.com/YTXM11780
Python的过滤函数非常适合解决这个问题。 您可以以匿名lambda函数的形式指定筛选条件作为第一个参数,并将要筛选的列表作为第二个参数
请注意,您必须将结果转换为列表
list.remove
只删除第一个匹配项,因此您应该从头开始构建列表,因为重复删除代价高昂。此外,如果这些是某些计算的结果并且存在舍入误差,您可能希望查看math.isclose
:相关问题 更多 >
编程相关推荐