如何在Ruby中以特定的方式组合两个数组
假设我有两个数组:如何在Ruby中以特定的方式组合两个数组,ruby,arrays,delegates,combinations,Ruby,Arrays,Delegates,Combinations,假设我有两个数组: a = [[1],[2],[3]] b = [[4],[5],[6]] 是否有一个选项允许我这样组合它们: a.combined_somehow(b) == [[1,4],[2,5],[3,6]] 因为我希望它能防止我在内部数组中重复。我的意思是,如果它是: a = [[1],[2],[3]] b = [[1],[5],[3]] 然后输出为:[[1]、[2,5]、[3]] require 'pp' a = [[1],[2],[3]] b = [[1],[5],[3]]
a = [[1],[2],[3]]
b = [[4],[5],[6]]
是否有一个选项允许我这样组合它们:
a.combined_somehow(b) == [[1,4],[2,5],[3,6]]
因为我希望它能防止我在内部数组中重复。我的意思是,如果它是:
a = [[1],[2],[3]]
b = [[1],[5],[3]]
然后输出为:[[1]、[2,5]、[3]]
require 'pp'
a = [[1],[2],[3]]
b = [[1],[5],[3]]
def combine( a, b )
[ a.flatten, b.flatten ].transpose.map(&:uniq)
end
pp combine( a, b )
输出
[[1], [2, 5], [3]]
输出
[[1], [2, 5], [3]]
在我看来,只是觉得有点红润:
a = [[1],[2],[3]]
b = [[4],[5],[6]]
p a.zip(b).map(&:flatten) #=> [[1, 4], [2, 5], [3, 6]]
a = [[1],[2],[3]]
b = [[1],[5],[3]]
p a.zip(b).map{|x|x.flatten.uniq} #=> [[1], [2, 5], [3]]
在我看来,只是觉得有点红润:
a = [[1],[2],[3]]
b = [[4],[5],[6]]
p a.zip(b).map(&:flatten) #=> [[1, 4], [2, 5], [3, 6]]
a = [[1],[2],[3]]
b = [[1],[5],[3]]
p a.zip(b).map{|x|x.flatten.uniq} #=> [[1], [2, 5], [3]]
我的发言如下:
a = [[1],[2],[3]]
b = [[4],[5],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2, 5], [3, 6]]
a = [[1],[2],[3]]
b = [[4],[2],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2], [3, 6]]
我的发言如下:
a = [[1],[2],[3]]
b = [[4],[5],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2, 5], [3, 6]]
a = [[1],[2],[3]]
b = [[4],[2],[6]]
a.map.with_index{|e,i| e | b[i]}
# => [[1, 4], [2], [3, 6]]
不需要require.a.flatte.zip(b.flatte.uniq!很好,对;pp(漂亮的打印)只是打印输出。使用“.uniq!”似乎对我不起作用。。将
.uniq
放在末尾将消除重复的矩阵,而不是您所要求的内部元素。假设这是对每个内部数组的迭代。因此它将从内部数组中删除重复项。@user2128702我们不这么说,因为这不是正在发生的事情。马特是正确的。不需要要求。a.flatte.zip(b.flatte.uniq!很好,对;pp(漂亮的打印)只是打印输出。使用“.uniq!”似乎对我不起作用。。将.uniq
放在末尾将消除重复的矩阵,而不是您所要求的内部元素。假设这是对每个内部数组的迭代。因此它将从内部数组中删除重复项。@user2128702我们不这么说,因为这不是正在发生的事情。马特是对的,6打对0.5打;当然,但是在Ruby中,总是有很多方法可以做一些事情。我觉得这种方法比其他答案更有趣,因为:1,它遵循干燥原则(展平使用一次),并且可以扩展到任意数量的数组。没错,尽管能够使用来处理
是件好事。然而,总的来说,我倾向于同意你的观点,你的观点是它可以扩展到多个数组(通过添加单个字符!),这是锦上添花;当然,但是在Ruby中,总是有很多方法可以做一些事情。我觉得这种方法比其他答案更有趣,因为:1,它遵循干燥原则(展平使用一次),并且可以扩展到任意数量的数组。没错,尽管能够使用来处理
是件好事。然而,总的来说,我倾向于同意你的观点,你认为它可以扩展到多个数组(通过添加单个字符!)是锦上添花。