使2个阵列大小相同

时间:2015-04-19 03:58:25

标签: ruby

2个数组:

a = [[1, 2], [22, 11], [18, 9]]
b = [[1, 81]]

用[0,0]填写第二个的最佳方法是什么,所以它们的大小相同?

5 个答案:

答案 0 :(得分:5)

b.fill(b.size..a.size - 1) { [0, 0] }

答案 1 :(得分:4)

不是最有效但可读的:

b << [0,0] until a.size == b.size

更有效率:

b.concat [[0,0]] * (a.size-b.size)

答案 2 :(得分:3)

在我看来,这更具可读性:

(a.length - b.length).times do
  b << [0, 0]
end

答案 3 :(得分:1)

我喜欢fill,但似乎已经采取了这种做法。这是一种在不改变b的情况下返回所需数组的方法。没有被要求,但它在某些应用中可能有用:

Array.new(a.size) { |i| b[i] || [0,0] } 
  #=> [[1, 81], [0, 0], [0, 0]] 

当然,您可以将b =放在前面。

另一种原位方式是:

b.concat [[0,0]]*(a.size-b.size)
嘿,这很有趣。另一个(假设没有b的元素等于nil):

a.each_index { |i| b[i] ||= [0,0] }
b

答案 4 :(得分:0)

我希望append while的尺寸更小,因为我觉得它很好看:

a = [[1, 2], [22, 11], [18, 9]]
b = [[1, 81]]

b << [0, 0] while b.size < a.size

b #=> [[1, 2], [0, 0], [0, 0]]