【问题标题】:Collection of ranges in JuliaJulia 中的范围集合
【发布时间】:2020-07-07 14:00:06
【问题描述】:

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

vec_of_ranges = HOW TO INITIALIZE THIS?
for i=1:10
   range = i:20
   vec_of_ranges[i]=range
end

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

提前致谢!

【问题讨论】:

    标签: julia


    【解决方案1】:

    如果你输入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
    

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

    vec_of_ranges = fill(1:20, 10)
    

    【讨论】:

    • 不错!非常感谢!
    【解决方案2】:

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

    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
    

    您也可以使用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
    

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多