如果它是 Julia 中空列表上的产品,如何将产品设置为 0?

How to set product to 0 if its a product over an empty list in Julia?

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

我正在使用 Julia 版本 1.5.2。

你要的是incorrect/unconventional。 product of the elements of an empty sequence 应该是 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).

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

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