Procesando pares de valores de dos secuencias en Clojure
Pregunta
Estoy tratando de ingresar a la comunidad Clojure. He estado trabajando mucho con Python, y una de las características que uso ampliamente es el método zip (), para iterar sobre pares de valores. ¿Hay una manera (inteligente y corta) de lograr lo mismo en Clojure?
Solución
Otra forma es simplemente usar map junto con alguna función que recopile sus argumentos en una secuencia, como esta:
user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])
Otros consejos
(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}
La iteración sobre los mapas ocurre en pares, p. 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
La pregunta ha sido respondida, 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 la partición para eso).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow