Angenommen, ich habe die folgende Liste von Tupeln konvertieren:Scala: Wie Tupelelemente auf Listen
val tuples = listOfStrings.map(string => {
val split = string.split(":")
(split(0), split(1), split(2))
})
Ich mochte das Split (0) in einer Liste, Split (1) in einer anderen Liste erhalten und bald. Ein einfacher Weg, dies erreicht werden könnte, ist durch Schreiben:
list1 = tuples.map(x => x._1).toList
list2 = tuples.map(x => x._2).toList
list3 = tuples.map(x => x._3).toList
Gibt es eine elegantere (funktionaler) Weg, um die oben erreichen, ohne 3 separate Aussagen zu schreiben?
zu langsam :) etwa war schreiben: 'tuples.map {t => t._1 :: t._2 :: t._3 :: Nil} .transpose 'nice one. +1 –
Schlechte Idee, sollten Sie entpacken von der anderen Antwort: http://stackoverflow.com/a/17281359/53974 – Blaisorblade
@Balisorblade: Ich muss nicht zustimmen. Dies wäre wahr, wenn es ein 'Tuple2' wäre, aber es ist ein' Tuple3'. 'unzip' behandelt nur entpackende Paare, und das eigene Beispiel von jeschan zeigt eine Liste von' Tuple3', nicht 'Tuple2'. –