Como combinar matrizes em Ruby

"Qual é a melhor maneira de combinar matrizes? "Esta questão é bastante vaga e pode significar algumas coisas diferentes.

Concatenação

Concatenação é acrescentar uma coisa à outra. Por exemplo, concatenando as matrizes [1,2,3] e [4,5,6] Darei à você [1,2,3,4,5,6]. Isso pode ser feito de algumas maneiras Rubi.

O primeiro é o operador positivo. Isso acrescentará um matriz até o final de outro, criando uma terceira matriz com os elementos de ambos.

Como alternativa, use o concat método (o operador + e o método concat são funcionalmente equivalentes).

Se você estiver realizando muitas dessas operações, poderá evitar isso. Criação de Objetos não é gratuito e todas essas operações criam uma terceira matriz. Se você deseja modificar uma matriz no local, prolongando-a com novos elementos, você pode usar o operador <<. no entanto se voc tentar algo como isto obter um resultado inesperado.>

Em vez do esperado [1,2,3,4,5,6] matriz que obtemos [1,2,3,[4,5,6]]. Isso faz sentido, o operador anexar pega o objeto que você atribui e o anexa ao final da matriz. Não sabia nem se importava que você tentasse anexar outra matriz à matriz. Para que possamos fazer um loop sobre nós mesmos.

instagram viewer

Definir operações

O mundo "combinar" também pode ser usado para descrever as operações definidas. As operações básicas do conjunto de interseção, união e diferença estão disponíveis no Ruby. Lembre-se de que "conjuntos" descrevem um conjunto de objetos (ou em matemática, números) que são únicos nesse conjunto. Por exemplo, se você fizesse uma operação definida na matriz [1,1,2,3] Ruby filtrará esse segundo 1, mesmo que 1 possa estar no conjunto resultante. Portanto, esteja ciente de que essas operações definidas são diferentes das operações de lista. Conjuntos e listas são coisas fundamentalmente diferentes.

Você pode fazer a união de dois conjuntos usando o | operador. Este é o operador "or", se um elemento estiver em um conjunto ou no outro, está no conjunto resultante. Então o resultado de [1,2,3] | [3,4,5] é [1,2,3,4,5] (lembre-se de que, embora existam dois três, esta é uma operação definida, não uma operação de lista).

A interseção de dois conjuntos é outra maneira de combinar dois conjuntos. Em vez de uma operação "ou", a interseção de dois conjuntos é uma operação "e". Os elementos do conjunto resultante são aqueles em ambos conjuntos. E, sendo uma operação "e", usamos o operador &. Então o resultado de [1,2,3] & [3,4,5] e simples [3].

Finalmente, outra maneira de "combinar" dois conjuntos é fazer a diferença. A diferença de dois conjuntos é o conjunto de todos os objetos no primeiro conjunto que é não no segundo conjunto. então [1,2,3] - [3,4,5] é [1,2].

Fechando

Finalmente, há "fechar". Duas matrizes podem ser compactadas juntas, combinando-as de uma maneira bastante única. É melhor apenas mostrar primeiro e explicar depois. O resultado de [1,2,3] .zip ([3,4,5]) é [ [1,3], [2,4], [3,5] ]. Então o que aconteceu aqui? As duas matrizes foram combinadas, o primeiro elemento sendo uma lista de todos os elementos na primeira posição de ambas as matrizes. O zíper é uma operação estranha e talvez você não encontre muita utilidade para isso. Seu objetivo é combinar duas matrizes cujos elementos se correlacionam estreitamente.

instagram story viewer