我正在学习Ruby编程语言。目前,我有一个列表的列表,希望能够实现以下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中是否有一种简单的方法来实现相同的功能?
zip_longest
无关的问题中引入所有这些额外的 Python 特定复杂性,只会吓跑90%的 Ruby 魔法师,他们本来可以如数家珍的知道答案。由于 Python 代码不是很Pythonic(使用lambda
而不是def
,但在任何情况下都给结果命名?在使用更复杂的map
调用之前避免微不足道的map(str, x)
?在不需要的地方添加额外的括号?),即使是一些知道一点Ruby的 Python巫师也会被吓到。 - abarnert