Julia中锯齿数组的初始化

Julia中锯齿数组的初始化,julia,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. 我们能用更好的方式来做吗?最简单的写作方式是我认为: arr = [Int[] for _ in 1:K] 你也可以这样

我是朱莉娅的新手。我试图初始化一个锯齿状数组,在第一维中大小为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.

我们能用更好的方式来做吗?

最简单的写作方式是我认为:

arr = [Int[] for _ in 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]
arr = fill(Int[], K)
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]