2009-06-17 21 views

Odpowiedz

12

Innym sposobem jest po prostu użyć mapy wraz z jakiejś funkcji, która zbiera swoje argumenty w sekwencji, tak:

user=> (map vector '(1 2 3) "abc") 
([1 \a] [2 \b] [3 \c]) 
+0

Ten przykład był w stanie obsłużyć trzy sekwencje, dzięki. – Thomas

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

Powtarzanie map odbywa się w pary, np. tak:

(doseq [[k v] (zipmap [:a :b :c] (range 3))] 
    (printf "key: %s, value: %s\n" k v)) 

drukuje:

key: :c, value: 2 
key: :b, value: 1 
key: :a, value: 0 
+0

Przetestowałem to podejście i nie mogłem obsłużyć trzech lub więcej sekwencji. Powinienem był wspomnieć o tym wymogu w początkowym pytaniu, przepraszam. – Thomas

3

Pytanie został odebrany, ale wciąż jest interleave, który obsługuje również dowolną liczbę sekwencji, ale nie grupuje wynikowej sekwencji w krotki (ale możesz użyć partition dla w).

Powiązane problemy