我是朱莉娅的新手。我正在尝试在第一维中初始化已知大小为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 = 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] 删除。
我来说两句