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

2024-03-28 21:45:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将这段代码转换成Ruby,包括反向数组迭代而不是索引?你知道吗

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

从Python代码中我可以理解,数组d是反转的,但是元素的索引不是?
扭曲!
如何在Ruby中实现这一点?你知道吗


Tags: 代码in元素forindex数组outruby
2条回答

考虑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

Ruby中Python代码片段的等效形式是:

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

相关问题 更多 >