我想要一种在 Julia 中以编程方式“解构”可变长度向量的方法。我不关心结果向量的顺序。
例如,假设我的向量向量是A = [[1], [2,3], [4,5,6]]
。我可以A
通过写入来解构vcat(A[1], A[2], A[3])
,它会返回[1,2,3,4,5,6]
。然而,如果 的长度A
很大,那么这种方法就变得很麻烦。有没有更好、更可扩展的方法来获得相同的结果?
尝试Iterators.flatten
:
julia> collect(Iterators.flatten(A))
6-element Vector{Int64}:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
(这会产生一个惰性表示,因此我collect
在显示输出之前编辑了这个)
虽然我会支持 Przemyslaw 对于任何可以使用惰性表示的情况的回答,但也许对你的问题更直接的答案是:
julia> vcat(A...)
6-element Vector{Int64}:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
每当您觉得需要将集合的所有元素作为函数参数键入时,splatting...
就是您的朋友。
然而,splatting 会对性能产生负面影响,因此通常建议使用reduce
,它专门用于vcat
:
julia> reduce(vcat, A)
6-element Vector{Int64}:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)