在我的代码中,我使用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)