Ruby中的Python枚举?
Posted
技术标签:
【中文标题】Ruby中的Python枚举?【英文标题】:Python's enumerate in Ruby? 【发布时间】:2012-12-05 21:25:10 【问题描述】:def enumerate(arr):
(0..arr.length - 1).to_a.zip(arr)
为此内置了一些东西吗?它不需要让它的成员不可变,它只需要在标准库中。我不想成为继承 Array 类以向项目添加 Python 功能的人。
它在 Ruby 中有不同的名称吗?
%w(a b c).enumerate
=> [[0, "a"], [1, "b"], [2, "c"], [3, "d"]]
【问题讨论】:
【参考方案1】:在 Python 中是这样的:
a = ['do', 're', 'mi', 'fa']
for i, s in enumerate(a):
print('%s at index %d' % (s, i))
在 Ruby 中变成这样:
a = %w(do re mi fa)
a.each_with_index do |s,i|
puts "#s at index #i"
end
【讨论】:
a = 'do re mi fa'.split()
可能更接近 Ruby 版本【参考方案2】:
假设它是用于枚举,each_with_index
可以做到这一点。或者,如果您有 Enumerator
,只需使用 with_index
。
【讨论】:
【参考方案3】:也许更快的解决方案是:
%w(a b c).map.with_index |x, i| [i, x]
【讨论】:
嘿...看起来更熟悉;)
。【参考方案4】:
一个有趣的!
a = %w(do re mi fa)
a.length.times.zip a
【讨论】:
在 python 中,这将是zip(range(len(a)), a)
,以防万一你像我一样必须运行irb
才能了解.times
的巧妙用法。很不错以上是关于Ruby中的Python枚举?的主要内容,如果未能解决你的问题,请参考以下文章