Hur man kombinerar matriser i Ruby

click fraud protection

"Vad är det bästa sättet att kombinera arrayer? "Denna fråga är ganska vag och kan betyda några olika saker.

sammanlänkning

Samkoppling är att lägga till en sak till en annan. Till exempel, sammanfoga matriserna [1,2,3] och [4,5,6] kommer att ge dig [1,2,3,4,5,6]. Detta kan göras på några sätt i Rubin.

Den första är plusoperatören. Detta kommer att bifogas en array till slutet av en annan, skapar en tredje grupp med elementen i båda.

Använd alternativt concat metod (+ operatören och concat-metoden är funktionellt ekvivalenta).

Om du gör många av dessa åtgärder kanske du vill undvika detta. Skapande av objekt är inte gratis, och var och en av dessa operationer skapar en tredje grupp. Om du vill ändra en matris på plats och göra den längre med nya element kan du använda <

I stället för det förväntade [1,2,3,4,5,6] matris vi får [1,2,3,[4,5,6]]. Detta är meningsfullt, den bifogade operatören tar objektet du ger det och lägger till det i slutet av matrisen. Det visste inte eller bry sig om att du försökte lägga till en annan matris till matrisen. Så vi kan slinga över det själva.

instagram viewer

Ställ in operationer

Världen "kombinera" kan också användas för att beskriva de inställda operationerna. De grundläggande uppsättningarna för korsning, förening och skillnad finns i Ruby. Kom ihåg att "uppsättningar" beskriver en uppsättning objekt (eller i matematik, siffror) som är unika i den uppsättningen. Om du till exempel skulle göra en inställd operation på matrisen [1,1,2,3] Ruby kommer att filtrera bort den andra 1, även om 1 kan vara i den resulterande uppsättningen. Så var medveten om att dessa uppsättningar är annorlunda än listoperationer. Uppsättningar och listor är i grunden olika saker.

Du kan ta föreningen mellan två uppsättningar med hjälp av | operatör. Detta är operatören "eller", om ett element är i den ena uppsättningen eller den andra, är det i den resulterande uppsättningen. Så resultatet av [1,2,3] | [3,4,5] är [1,2,3,4,5] (kom ihåg att även om det finns två tresor är detta en inställd operation, inte en listoperation).

Korsningen mellan två uppsättningar är ett annat sätt att kombinera två uppsättningar. I stället för en "eller" operation är korsningen mellan två uppsättningar en "och" operation. Elementen i den resulterande uppsättningen är de i både uppsättningar. Och som en "och" operation använder vi & operatören. Så resultatet av [1,2,3] & [3,4,5] är helt enkelt [3].

Slutligen, ett annat sätt att "kombinera" två uppsättningar är att ta sin skillnad. Skillnaden mellan två uppsättningar är uppsättningen av alla objekt i den första uppsättningen som är inte i den andra uppsättningen. Så [1,2,3] - [3,4,5] är [1,2].

zippa

Slutligen finns det "dragkedja". Två matriser kan dragas samman och kombinera dem på ett ganska unikt sätt. Det är bäst att bara visa det först och förklara efter. Resultatet av [1,2,3] .zip ([3,4,5]) är [ [1,3], [2,4], [3,5] ]. Så vad hände här? De två matriserna kombinerades, varvid det första elementet var en lista över alla element i den första positionen för båda matriserna. Dragkedja är lite konstigt och du kanske inte hittar mycket användning för det. Syftet är att kombinera två matriser vars element nära korrelerar.

instagram story viewer