Verarbeiten von Wertepaaren von zwei Sequenzen in Clojure
Frage
Ich versuche, in die Clojure Gemeinschaft zu erhalten. Ich habe viel mit Python gearbeitet, und eine der Funktionen, die ich machen ausgiebig Gebrauch von der Reißverschluss ist () -Methode, über Wertepaare laufen. Gibt es eine (klug und kurz) Art und Weise das gleiche in Clojure erreichen?
Lösung
Eine andere Möglichkeit ist einfach Karte zu verwenden, zusammen mit einigen Funktion, die ihre Argumente in einer Folge sammelt, wie folgt aus:
user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])
Andere Tipps
(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}
Iterieren über Karten geschieht paarweise, z.B. wie folgt aus:
(doseq [[k v] (zipmap [:a :b :c] (range 3))]
(printf "key: %s, value: %s\n" k v))
druckt:
key: :c, value: 2
key: :b, value: 1
key: :a, value: 0
Die Frage beantwortet wurde, aber es gibt noch interleave
, die auch eine beliebige Anzahl von Sequenzen behandelt, aber nicht Gruppe der resultierende Sequenz in Tupeln (aber Sie partition
dafür verwenden).