如何设置产品为0,如果它的产品在一个空列表在Julia?



在我的代码中,我使用Julia的prod()函数对列表中的元素进行乘积。然而,有时这个列表是空的,在这种情况下,我希望prod(myList)只返回0(或任何固定的数字,如1)。我试着在网上搜索,但我只能找到迭代器或类似的东西。

我使用的是Julia 1.5.2版本。

简单的三元运算符是否适合您的情况?

isempty(my_list) ? 0 : prod(my_list)

你想要的是不正确的/非常规的。空序列中元素的乘积应为1,因为它是乘法单位元素。

任意固定数字"很容易:

reduce(*, ls; init=1)

但这在零的情况下并不适用,因为它是一个湮灭子,使整个乘积为零:

julia> ls = [1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> reduce(*, ls; init=0)
0

现在,返回1,然后检查它是否有效,如果你只有整数。它不会在你有一个有理的乘积的时候,因为那样得到的1也可以来自x * (1/x)

julia> zeroprod(x) = isempty(x) ? zero(eltype(x)) : prod(x)
zeroprod (generic function with 1 method)

最新更新