【问题标题】:Nested Ruby List Generation嵌套 Ruby 列表生成
【发布时间】:2013-01-27 15:25:05
【问题描述】:

我正在尝试生成一个如下所示的列表:

list = [[1, 1], [2, 2], [3, 3], [4, 4], ... [25, 25]]

有没有类似range 的简单方法来完成此任务?

更新:看起来 .zip 胜出

  • .map 耗时 1184.344 毫秒
  • .zip 耗时 706.23 毫秒

测试:

beginning_time = Time.now
(1..2500000).map { |i| [i,i] }
end_time = Time.now
puts "Time elapsed #{(end_time - beginning_time)*1000} milliseconds"

beginning_time = Time.now
(1..2500000).zip 1..25
end_time = Time.now
puts "Time elapsed #{(end_time - beginning_time)*1000} milliseconds"

【问题讨论】:

    标签: ruby arrays list range dynamic-arrays


    【解决方案1】:

    试试这个:

    (1..25).map { |i| [i,i] }
    

    输出:

    [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 25]]
    

    【讨论】:

      【解决方案2】:
      (1..25).zip 1..25
      #=> [[1, 1], [2, 2], [3, 3], [4, 4] ...
      

      【讨论】:

        【解决方案3】:

        试试这个:

        Array.new(25){|i| [i+1, i+1]}
        

        【讨论】:

          【解决方案4】:

          好吧,迟到了 2 小时,而且,只是为了与众不同......

          [[*1..25], [*1..25]].transpose
          # => [[1, 1], [2, 2], [3, 3], [4, 4], ...
          

          ...或者...呵呵...

          ([[*1..25]]*2).transpose
          

          【讨论】:

            猜你喜欢
            • 2020-06-06
            • 1970-01-01
            • 1970-01-01
            • 2023-04-10
            • 2011-10-18
            • 1970-01-01
            • 2019-05-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多