2009-06-17 7 views

Antwort

12

Ein anderer Weg 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]) 
+0

Dieses Beispiel konnte drei Sequenzen verarbeiten, danke. – Thomas

4
(zipmap [:a :b :c] (range 3)) 
-> {:c 2, :b 1, :a 0} 

Iterieren über Karten geschieht paarweise, z. 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 
+0

Ich testete den Ansatz, und es konnte nicht drei oder mehr Sequenzen verarbeiten. Ich hätte diese Anforderung in der ersten Frage erwähnen müssen, sorry. – Thomas

3

Die Frage wurde beantwortet, aber es gibt immer noch interleave, das auch eine willkürliche Anzahl von Sequenzen behandelt, aber die resultierende Sequenz nicht in Tupel gruppiert (aber Sie können partition für th verwenden beim).