3

我正在努力学习红宝石。此时我有一个列表列表,我想等效于以下python代码:

import itertools
l = [[1,2], [3], [10, 20, -4, 5]]
list(itertools.izip_longest(*l, fillvalue='NaN'))

结果是:

[(1, 3, 10), (2, 'NaN', 20), ('NaN', 'NaN', -4), ('NaN', 'NaN', 5)]

列表中的列表数量l可以不同。有没有一种简单的方法可以在 ruby​​ 中完成同样的任务?

4

1 回答 1

4

I don't think there is a direct counterpart for izip_longest in Ruby standard library.

l = [[99,2], [3], [10, 20, -4, 5]]
n = l.map{ |x| x.size }.max
(0...n).map { |i| l.map { |x| x.fetch(i, 'NaN') } }
# => [[99, 3, 10], [2, "NaN", 20], ["NaN", "NaN", -4], ["NaN", "NaN", 5]]
于 2013-10-25T05:50:06.493 回答