该任务看起来很简单,但我正在努力获得初始化范围向量(数组、集合或类似的)的方法。也就是说,我需要做这样的事情:
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)
谁能给我一个关于如何做到这一点的提示?我需要它,这样我就可以在该范围集合上评估给定的数组...
提前致谢!
如果你输入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)
如果您使用推导式,您可以一次性免费完成这两个步骤(即获取正确的元素类型并填充内容):
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)