【问题标题】:Python's enumerate in Ruby?Ruby中的Python枚举?
【发布时间】: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"]] 

【问题讨论】:

    标签: python ruby arrays enumerate


    【解决方案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 的巧妙用法。很不错
      猜你喜欢
      • 2015-08-08
      • 2012-11-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多