在Julia中初始化锯齿数组

用户名

我是朱莉娅的新手。我正在尝试在第一维中初始化已知大小为K的锯齿状数组,在第二维中初始化未知的大小。

我目前这样做的方式是

arr = Array{Array{Int}}(undef, K)
for i in 1:K
    arr[i] = []
end
# and then push! elements to arr[k] if the element is in category k.

我们能以更好的方式做到这一点吗?

BogumiłKamiński

我认为最简单的写法是:

arr = [Int[] for _ in 1:K]

您也可以写(我将这些显示为练习,就像我通常使用的理解一样):

arr = map(_ -> Int[], 1:K)

要么

arr = (_ -> Int[]).(1:K)

应避免的常见错误是:

arr = fill(Int[], K)

这样,的每个元素arr都是完全相同的向量,而您不需要。例如

julia> arr = fill(Int[], K)
5-element Array{Array{Int64,1},1}:
 []
 []
 []
 []
 []

julia> push!(arr[1], 1)
1-element Array{Int64,1}:
 1

julia> arr
5-element Array{Array{Int64,1},1}:
 [1]
 [1]
 [1]
 [1]
 [1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章