我正在努力学习红宝石。 此刻我有一个列表列表,我想要相当于以下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
中的列表数量可能不同。在红宝石中有没有一种简单的方法来实现它?
答案 0 :(得分:4)
我认为Ruby标准库中没有izip_longest
的直接对应物。
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]]