1

说我有以下内容:

a = [1,2,3,4,5,6,7,8]

如何将其转换为每对的平均值?

也就是说,我怎样才能使

a = [1.5,3.5,5.5,7.5]

我的意思是,我可以做到

我在想a.step(2),然后......涉及each_with_index的东西?

编辑:我看到这个:

arr.each_with_index.map { |x,i| [x, i+2] }

arr.each_with_index.map { |x,i| (x + arr[i+1])/2 }

然后过滤掉所有偶数索引?

4

1 回答 1

4

each_slice(2)map会在这里做的伎俩:

[1,2,3,4,5,6,7,8].each_slice(2).map { |x,y| (x+y)*0.5 }
 => [1.5, 3.5, 5.5, 7.5]

each_slice一次迭代数组n 个元素,然后我们map转换生成的枚举数。

于 2013-04-14T19:02:30.320 回答