如何将此代码转换为涉及反向数组迭代而不是索引的Ruby?
out = 0
for index,x in enumerate(reversed(d)):
out += x*pow(2,index)
根据我从Python代码中可以理解的,数组d
被反转,但元素的索引不是?
扭曲!的
如何在Ruby中执行此操作?
答案 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