2

次のようなリストを生成しようとしています。

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"
4

4 に答える 4

6

これを試して:

(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]]
于 2013-01-27T01:12:47.507 に答える
3
(1..25).zip 1..25
#=> [[1, 1], [2, 2], [3, 3], [4, 4] ...
于 2013-01-27T01:28:50.790 に答える
1

これを試して:

Array.new(25){|i| [i+1, i+1]}
于 2013-01-27T01:17:00.600 に答える
1

わかりました、2時間遅れました、そして、ちょっと違うように...

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

...または...へへ...

([[*1..25]]*2).transpose
于 2013-01-27T03:35:00.927 に答える