Ruby反向迭代数组但不是索引

时间:2017-07-06 20:40:52

标签: python arrays ruby loops

如何将此代码转换为涉及反向数组迭代而不是索引的Ruby?

    out = 0
    for index,x in enumerate(reversed(d)):
        out += x*pow(2,index)

根据我从Python代码中可以理解的,数组d被反转,但元素的索引不是?
扭曲!
如何在Ruby中执行此操作?

2 个答案:

答案 0 :(得分:2)

Ruby中的Python代码片段相当于:

d.reverse_each.with_index.inject(0) do |out, (x,i)|
  out += x * 2**i
end

答案 1 :(得分:0)

考虑Python中的下一个输出:

for index, string in enumerate(reversed(['zero', 'one', 'two'])):
    print index, string
# 0 two
# 1 one
# 2 zero

然后您可以在应用枚举器之前使用reverse,在本例中为each,因此,它会将您的数组作为['two', 'one', 'zero'],并且每次迭代的索引都将为保持不变:

['zero', 'one', 'two'].reverse.each_with_index do |word, index|
  puts "#{index} #{word}"
end
# 0 two
# 1 one
# 2 zero