Skip to main content
 首页 » 编程设计

0 的 Python reduce() 函数

2025年05月04日10luoye11

我有 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)