J'ai 4 tableaux.
for i in (1..array1.count) puts array1[i] + ", " + array2[i] + ", " + array3[i] + ", " + array4[i] end
4 Réponses :
Eh bien, si vous savez qu'ils étaient tous de la même longueur: edit: Le code suivant fonctionne strong> p> array1 = ["one", "two", "three"]
array2 = ["1", "2", "3"]
array3 = ["un", "deux", "trois"]
array4 = ["ichi", "ni", "san"]
arrayList = []
arrayList.push(array1, array2, array3, array4)
p arrayList
(0...array1.length).each{|i|
(0...arrayList.length).each{|j|
print arrayList[j][i] + ", "
}
print "\n"
}
Que se passe-t-il si vous ne savez pas combien il y a vraiment?
Oui, j'ai mentionné que dans mon commentaire ci-dessus, l'utilisation de Join est plus agréable.
Ouais ne semble pas avoir d'autre moyen coupé de faire cela. J'ai une configuration similaire que ceci.
Je ne pense pas vraiment que c'est le meilleur moyen. Il existe des moyens de rendre le zip code> et transpose code> solutions fonctionne pour vous. Cela peut prendre un peu d'effort supplémentaire, mais IMHO, le code se termine un peu plus propre.
J'utiliserais édition: non, énumérable # zip code> pour créer un tableau de tableaux. Il créera un tableau dans lequel le premier élément est un tableau des premiers éléments de tous les tableaux que vous y passez, et ainsi de suite avec la seconde, troisième, etc. puis passez dans cette liste et imprimez chaque argument en utilisant tableau # jointure code> . Quelque chose comme: zip code> ne sera pas très utile en ce qui concerne les matrices d'ajout. La méthode de Glenn's est bonne pour cela. Vous pouvez ajouter à la fin d'un tableau Zip code> PED, mais ce n'est pas aussi simple: p>
Et si vous ne savez pas combien de tableaux vous avez affaire. Pouvez-vous "pousser" des tableaux à un .zip () dans une boucle?
Ne tenez pas compte de ce premier édition. Mon cerveau ne fonctionnait pas correctement.
@gqweg Vous pouvez décompresser un nombre inconnu de tableaux à la méthode ZIP ... voir Modifier.
EASY:
a[0].zip(*a[1..-1]).map {|x| x.join(", ")}.join("\n")
C'est une belle solution. J'aime mon Zip code> Solution plus (parce que c'est le mien, et parce qu'il les met dans le bon ordre la première fois), mais il est agréable de savoir sur transpose code>.
Zip est idéal pour paires de tableaux. Mais cela ne fonctionne que si vous savez au moment de l'écriture de code Combien de tableaux que vous avez, alors que Transpose prend la gamme de matrices entières et ne se soucie donc pas de la taille. La voie transposée est légèrement plus rapide aussi.
Est-il possible de le faire fonctionner encore même lorsque des array ne sont pas de la même taille?
Nous pouvons les faire toutes de la même longueur: n = a.map {| i | i.length} .max; NTimes {| i | a [i] .concat ([nil] * (n - a [i] .length))} code> (ce paribe les entièrement avec nil code> valeurs afin que nous puissions les transposer en toute sécurité).
Dans mon sommeil, j'ai réalisé comment faire fonctionner la version zip sur n'importe quel nombre de tableaux: le puissant *.
Si vous utilisez Ruby 1.9, vous pouvez peut-être profiter des itérateurs externes, cela vous permettra de traiter avec n'importe quel nombre de tableaux:
one, 1, un, ichi two, 2, deux, ni three, 3, trois, san
Là nous allons. Je ne pouvais pas m'en empêcher, j'ai été excité et je viens d'écrire le code moi-même pour m'assurer que je l'ai dit. Prendre plaisir. Code de travail ci-dessous (à l'exception des virages suivants, mais vous pouvez vous en débarrasser)