2009-06-17 23 views

Respuesta

12

Otra forma es simplemente usar un mapa junto con alguna función que recoge sus argumentos en una secuencia, como esto:

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

Este ejemplo fue capaz de manejar tres secuencias, gracias. – Thomas

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

Iteración sobre los mapas ocurre por parejas, p. Ej. de esta manera:

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

impresiones:

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

Probé la aproximación y no pudo manejar tres o más secuencias. Debería haber mencionado ese requisito en la pregunta inicial, lo siento. – Thomas

3

La pregunta ha recibido una respuesta, pero todavía hay interleave, que también maneja un número arbitrario de secuencias, pero no agrupa la secuencia resultante en tuplas (pero puede usar partition para th a).

Cuestiones relacionadas