如何在Ruby中組合數(shù)組
"組合數(shù)組的最佳方法是什么?"這個問題非常模糊,可能意味著一些不同的事情。
連接
連接是將一件事附加到另一件事。例如,連接數(shù)組[1,2,3]和[4,5,6]將給你[1,2,3,4,5,6]。這可以用Ruby以幾種方式完成。
首先是加號操作員。這將附加一個數(shù)組到另一個數(shù)組的末尾,創(chuàng)建一個包含兩者元素的第三個數(shù)組。
或者,使用concat方法(+運算符和concat方法在功能上等效)。
如果您'正在做很多這些操作,您可能希望避免這種情況。對象創(chuàng)建不是免費的,并且這些操作中的每一個都創(chuàng)建第三個數(shù)組。如果要修改一個數(shù)組,使用新元素可以更長時間,您可以使用
代替預期的[1,2,3,4,5,6]陣列,我們得到[1,2,3,[4,5,6]]。這是有道理的,append運算符獲取您給它的對象并將其附加到數(shù)組的末尾。它不知道或關心你試圖將另一個數(shù)組附加到數(shù)組。所以我們可以自己循環(huán)。
設置操作
世界"組合"也可用于描述設置操作。Ruby提供交叉,聯(lián)合和差異的基本集合操作。請記住,"sets"描述該集中**的一組對象(或數(shù)學,數(shù)字)。例如,如果要對數(shù)組[1,1,2,3]進行set操作,Ruby將過濾掉第二個1,即使1可能在結果集中。所以請注意,這些設置操作與列表操作不同。集合和列表是根本不同的事情。
你可以接受t的聯(lián)合wo集使用|運算符。這是"or"運算符,如果一個元素在一組或另一組中,則它在結果集中's。所以[1,2,3]|[3,4,5]的結果是[1,2,3,4,5](請記住,即使有兩個三個,這是一個設置操作,而不是列表操作)。
兩組的交集是組合兩組的另一種方式。而不是"或"操作,兩組的交集是"和"操作。結果集的元素是和集中的元素。并且,作為一個"和"操作,我們使用&運算符。因此,[1,2,3]&[3,4,5]的結果只是[3]。
最后,另一種方法是"組合"兩組是采取它們的區(qū)別。兩組的區(qū)別在于第一組中所有對象的集合在第二組中而不是。因此[1,2,3環(huán)保的小知識]-[3,4,5]是[1,2]。
Zipping
最后,有"壓縮。"兩個數(shù)組可以壓縮在一起,以相當獨特的方式組合在一起。它'最好先展示它,然后解釋。[1,2,3].zip([3,4,5])的結果是[[1,3],[2,4],[3,5]]]。那這里發(fā)生了什么?將兩個數(shù)組組合在一起,第一個元素是兩個數(shù)組第一個位置中所有元素的列表。拉鏈有點奇怪,你可能找不到太多用處。它的目的是組合兩個元素密切相關的數(shù)組。