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