2012-12-18 6 views
15
def enumerate(arr): 
    (0..arr.length - 1).to_a.zip(arr) 

これには何かが組み込まれていますか?メンバを不変にする必要はありません。標準ライブラリに入れるだけです。私は、Pythonの機能をプロジェクトに追加するためにArrayクラスをサブクラス化する人になりたくありません。RubyでPythonが列挙されていますか?

Rubyには別の名前がありますか?

%w(a b c).enumerate 
=> [[0, "a"], [1, "b"], [2, "c"], [3, "d"]] 

答えて

16

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 
+1

'A =「マイルFAを再実行します'.split() 'はRubyのバージョンに近いかもしれません – Antimony

6

それは、列挙のためだと仮定すると、each_with_indexはそれを行うことができます。 Enumeratorの場合は、with_indexを使用してください。

4

たぶん速く解決策は次のようになります。

%w(a b c).map.with_index {|x, i| [i, x] } 
+0

ねえ...それはもっと馴染んでいます。 – Droogans

関連する問題