Julia 中的范围集合

ger*_*ini 5 julia

该任务看起来很简单,但我正在努力获得初始化范围向量(数组、集合或类似的)的方法。也就是说,我需要做这样的事情:

vec_of_ranges = HOW TO INITIALIZE THIS?
for i=1:10
   range = i:20
   vec_of_ranges[i]=range
end
Run Code Online (Sandbox Code Playgroud)

谁能给我一个关于如何做到这一点的提示?我需要它,这样我就可以在该范围集合上评估给定的数组...

提前致谢!

JAl*_*lex 5

如果你输入typeof(1:50)你得到UnitRange{Int64}

所以你需要一个数组 UnitRange

尝试这个:

vec_of_ranges = Array{UnitRange{Int64},1}(undef, 10)
for i=1:10
   range = i:20
   vec_of_ranges[i]=range
end
Run Code Online (Sandbox Code Playgroud)

您可能还想使用该fill()命令

vec_of_ranges = fill(1:20, 10)
Run Code Online (Sandbox Code Playgroud)


Bog*_*ski 1

如果您使用推导式,您可以一次性免费完成这两个步骤(即获取正确的元素类型并填充内容):

julia> [i:20 for i in 1:10]
10-element Array{UnitRange{Int64},1}:
 1:20
 2:20
 3:20
 4:20
 5:20
 6:20
 7:20
 8:20
 9:20
 10:20
Run Code Online (Sandbox Code Playgroud)

或者你可以使用map

julia> map(i -> i:20, 1:10)
10-element Array{UnitRange{Int64},1}:
 1:20
 2:20
 3:20
 4:20
 5:20
 6:20
 7:20
 8:20
 9:20
 10:20
Run Code Online (Sandbox Code Playgroud)

如果你想使用广播,你可以这样做:

julia> UnitRange.(1:10, 20)
10-element Array{UnitRange{Int64},1}:
 1:20
 2:20
 3:20
 4:20
 5:20
 6:20
 7:20
 8:20
 9:20
 10:20
Run Code Online (Sandbox Code Playgroud)