问题描述
在我的代码中,我使用 Julia 的 prod() 函数对列表的元素进行乘积。但是,有时该列表是空的,在这种情况下,我希望 prod(myList) 只返回 0(或任何固定数字,如 1)。我尝试在网上搜索,但我唯一能找到的就是迭代器或类似的东西。
我使用的是 Julia 版本 1.5.2。
解决方法
简单的三元运算符是否适用于您的情况?
isempty(my_list) ? 0 : prod(my_list)
,
您想要的是不正确/非常规的。 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)
。
julia> zeroprod(x) = isempty(x) ? zero(eltype(x)) : prod(x)
zeroprod (generic function with 1 method)