将值插入 Ruby 中的每个其他数组索引
Insert value to every other array index in Ruby
我需要将像 [1,2,3]
这样的整数数组转换为每个整数后跟一个零的数组:[1,0,2,0,3,0]
.
我最好的猜测,它有效但看起来很糟糕:
> [1,2,3].flat_map{|i| [i,0]} => [1,0,2,0,3,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]
同时 Array#zip
works pretty well, one might avoid the pre-creation of zeroes array by using Array#product
:
[1,2,3].product([0]).flatten
或者,只使用减速器:
[1,2,3].each_with_object([]) { |e, acc| acc << e << 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 }
我需要将像 [1,2,3]
这样的整数数组转换为每个整数后跟一个零的数组:[1,0,2,0,3,0]
.
我最好的猜测,它有效但看起来很糟糕:
> [1,2,3].flat_map{|i| [i,0]} => [1,0,2,0,3,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]
同时 Array#zip
works pretty well, one might avoid the pre-creation of zeroes array by using Array#product
:
[1,2,3].product([0]).flatten
或者,只使用减速器:
[1,2,3].each_with_object([]) { |e, acc| acc << e << 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 }