如何在Ruby中组合数组

"组合数组的最佳方法是什么?"这个问题非常模糊,可能意味着一些不同的事情。

连接

连接是将一件事附加到另一件事。例如,连接数组[1,2,3][4,5,6]将给你[1,2,3,4,5,6]。这可以用Ruby以几种方式完成。

首先是加号操作员。这将附加一个数组到另一个数组的末尾,创建一个包含两者元素的第三个数组。

或者,使用concat方法(+运算符和concat方法在功能上等效)。

如果您'正在做很多这些操作,您可能希望避免这种情况。对象创建不是免费的,并且这些操作中的每一个都创建第三个数组。如果要修改一个数组,使用新元素可以更长时间,您可以使用

代替预期的[1,2,3,4,5,6]阵列,我们得到[1,2,3,[4,5,6]]。这是有道理的,append运算符获取您给它的对象并将其附加到数组的末尾。它不知道或关心你试图将另一个数组附加到数组。所以我们可以自己循环。

设置操作

世界"组合"也可用于描述设置操作。Ruby提供交叉,联合和差异的基本集合操作。请记住,"sets"描述该集中**的一组对象(或数学,数字)。例如,如果要对数组[1,1,2,3]进行set操作,Ruby将过滤掉第二个1,即使1可能在结果集中。所以请注意,这些设置操作与列表操作不同。集合和列表是根本不同的事情。

你可以接受t的联合wo集使用|运算符。这是"or"运算符,如果一个元素在一组或另一组中,则它在结果集中's。所以[1,2,3]|[3,4,5]的结果是[1,2,3,4,5](请记住,即使有两个三个,这是一个设置操作,而不是列表操作)。

两组的交集是组合两组的另一种方式。而不是"或"操作,两组的交集是"和"操作。结果集的元素是集中的元素。并且,作为一个"和"操作,我们使用&运算符。因此,[1,2,3]&[3,4,5]的结果只是[3]

最后,另一种方法是"组合"两组是采取它们的区别。两组的区别在于**组中所有对象的集合在第二组中而不是。因此[1,2,3环保的小知识]-[3,4,5][1,2]

Zipping

最后,有"压缩。"两个数组可以压缩在一起,以相当独特的方式组合在一起。它'比较好先展示它,然后解释。[1,2,3].zip([3,4,5])的结果是[[1,3],[2,4],[3,5]]]。那这里发生了什么?将两个数组组合在一起,**个元素是两个数组**个位置中所有元素的列表。拉链有点奇怪,你可能找不到太多用处。它的目的是组合两个元素密切相关的数组。

教育_1