我有 vals = [1.0, 0.0, 3.4, 0.0] 我想避免乘以零
如果我使用 reduce(operator.mul, iterable) - 我得到 0.0。
也适用于 reduce(lambda x, y : x * y, val)
如何为变量添加最小条件,以便仅大于零。但如果数组完全没有零元素,则返回 0。无法删除数组中的零元素
所以对于 vals = [1.0, 0.0, 3.4, 0.0] - 返回 3.4
对于 vals = [0.0, 0.0, 0.0, 0.0] - 返回 0
请您参考如下方法:
您可以从列表中删除 0。如果列表变为空,则返回 0,否则返回结果:
>>> no_zeroes = [value for value in values if value > 0]
>>> no_zeroes
[1.0, 3.4]
>>> reduce(lambda x, y : y*x, no_zeroes) if no_zeroes else 0
3.4
请注意,从数学的角度来看,empy 列表的乘积可能应该是 1。在那种情况下,你可以写:
reduce(lambda x, y : y*x, no_zeroes, 1)
