python - ruby 相当于 python izip_longest

标签 python ruby

<分区>

我正在努力学习 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​​ 中完成同样的事情?

最佳答案

我认为 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]]

关于python - ruby 相当于 python izip_longest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579406/

相关文章:

python - python如何关闭已经被gc处理过的文件?

Python:创建值与列名匹配的数据框

python - 将变量注入(inject)调用者的范围?

ruby-on-rails - 类型错误 : no implicit conversion of Symbol into Integer

ruby-on-rails - Mongoid 中 ActiveRecord#establish_connection 的等价物是什么?

ruby - ||= 是什么意思?

python - 为什么你可以多次关闭()一个文件对象?

使用 SFTP 库的 Python 失败并显示正确的代码

ruby-on-rails - 包括 do ..... end (参数数量错误)错误

ruby-on-rails - Ruby/Rails 迁移之外的数据库更改