我需要将一个整数数组(如[1,2,3]
)转换为数组,其中每个整数后跟零:[1,0,2,0,3,0]
。将值插入Ruby中的每个其他数组索引
我最好的猜测,其中作品,但看起来jenky:
> [1,2,3].flat_map{|i| [i,0]} => [1,0,2,0,3,0]
我需要将一个整数数组(如[1,2,3]
)转换为数组,其中每个整数后跟零:[1,0,2,0,3,0]
。将值插入Ruby中的每个其他数组索引
我最好的猜测,其中作品,但看起来jenky:
> [1,2,3].flat_map{|i| [i,0]} => [1,0,2,0,3,0]
虽然Array#zip
工作得很好,人们可能避免预创建零阵通过使用Array#product
:
[1,2,3].product([0]).flatten
,或者只是使用减速机:
[1,2,3].each_with_object([]) { |e, acc| acc << e << 0 }
漂亮的直线前进与zip
:
a = (1..10).to_a
b = Array.new(a.length, 0)
a.zip(b).flatten
# => [1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0]
这似乎和你一样 - ))
[1,2,3].map {|i| [i, 0] }.flatten
而且这一点。
[1,2,3].collect {|x| [x, 0] }.flatten
丑陋和无效的解决方案。
[1,2,3].join("0").split("").push(0).map{|s| s.to_i }
'map'在'collect'的别名中,前两个完全相同。后者不适用于2位数字。 – mudasobwa
感谢您的意见。 – marmeladze
imo,'flat_map'是理想的。它的效率很高,阅读很好。如果你没有提到它,我会给它作为答案。顺便说一句,你的问题只是暗示。最好总是说出这个问题。 –
'[i,0]'表示_“整数每个后面跟着一个零”__很好。 – Stefan