Ich versuche Scala-Liste wie List(1,2,3,4)
in Paare zu teilen (1,2) (2,3) (3,4)
, was ist eine einfache Möglichkeit, dies zu tun?Wie verwandelt man eine Scala-Liste in Paare?
Antwort
val xs = List(1,2,3,4)
xs zip xs.tail
// res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))
zu produzieren Da die docs sagen, zip
eine Liste aus dieser Liste und anderen iterable Sammlung gebildet Kosten durch entsprechende paarweise Kombination von Elementen. Wenn eine der beiden Sammlungen länger ist als die andere, werden die übrigen Elemente ignoriert.
So List('a,'b,'c,'d)
mit List('x,'y,'z)
Reißverschluss ist List(('a,'x), ('b,'y), ('c,'z))
mit dem endgültigen 'd
des ersten ignoriert.
Von Ihrem Beispiel ist die tail
von List(1,2,3,4)
List(2,3,4)
, so dass Sie sehen können, wie diese paarweise zusammen reißen.
Um eine Liste von Paaren (dh Tupel) versuchen, dieses
List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
Verwenden 'statt' collect' map' - das wird ein 'isDefinedAt' Aufruf speichern und eine Ausnahme, wenn ganz plötzlich Ihre ursprünglichen Sammlung werfen nicht mehr ein' list' ist, statt eine leise Herstellung leeres Ergebnis Aus demselben Grund sollten Sie 'Seq (a, b)' anstelle von 'List (a, b)' wahrscheinlich pattern-matching. –
List(1,2,3,4).sliding(2).map(x => (x.head, x.tail.head)).toList
res0: List[(Int, Int)] = List((1,2), (2,3), (3,4))
Dies ist die Antwort, die ich auch bei der Erstellung des Dokuments erhalten habe. Scheint offensichtlicher und lesbarer als der Rest imo. – arviman
@arviman Das ist, was ich zu der Zeit dachte. Ich habe wahrscheinlich versucht, den Gebrauch von 'sliding' zu erzwingen. Im Nachhinein ist die angenommene Antwort viel besser. – Brian
- 1. Wie web.config umbenennen verwandelt
- 2. PHP: Wie man ein Array in ein StdClass-Objekt verwandelt?
- 3. Git: Wie man einen Klon in einen neuen Zweig verwandelt?
- 4. Wie man Makefile in JSON Compilation Database verwandelt?
- 5. Wie man dieses Array in ein JavaScript-Objekt verwandelt?
- 6. Wie verwandelt man eine riesige Live-Datenbank in eine kleine Testdatenbank?
- 7. MySQL verwandelt sich in ª?
- 8. Wie erhält man eindeutige Integer-Paare aus einem Array wiederkehrender Paare in Java?
- 9. Veränderbare Paare in eine veränderbare Liste einfügen
- 10. Wie korrektes Funktionsaufruf Paare
- 11. Abrufen von Kopf- und Endstücken aus der Scalaliste
- 12. Wie stellt Productcode für Install Instanz verwandelt
- 13. Website verwandelt sich in eine Landschaft mit Tastatur
- 14. Int von Edit Text und verwandelt es in eine Zeichenfolge
- 15. Tricky Art Signatur für Paare reversed Paare
- 16. wie in Grundnamevalue-Paare in android
- 17. Meteor Lenker {{#if}} verwandelt Strings in Objekte
- 18. Wie man ein x509.Certificate in ein tls.Certificate in Go verwandelt?
- 19. Haskell Data.Void: undefined verwandelt sich in Endlosschleife
- 20. J verwandelt Carriage Return in Newline
- 21. C# URLDecode verwandelt% 5C in \\\ \ anstelle von \
- 22. Das Aufteilen von einzelnen Tags in Paare führt zu Problemen
- 23. Wie man ein Array aus einem Array von Doppel in String verwandelt, Swift
- 24. Datei ReadAlllines verwandelt Fremdsprache in Kauderwelsch ()
- 25. Wie alle Paare eines Satzes effizient erhalten?
- 26. Einzigartige Kookkurrenz Paare mit itertools.product()
- 27. Split-Array in einzigartige Paare
- 28. finde Paare in int [] b ;?
- 29. Splitting ein Wort in Paare
- 30. Oracle: Verflachung Namen Wert Paare in eine Tabelle
Das ist kurz und schlau, aber es ist schwerer zu verstehen, denke ich. –
Dies wäre meine erste Wahl für Prägnanz und Klarheit. Habe eine Verbesserung. – Brian
@Luigi: Ich habe diese Antwort hochgestuft und ziehe sie der aktuell akzeptierten vor, aber eine Erklärung wäre hilfreicher als "LOL, wenn du denkst, dass das schwer zu verstehen ist". –