Question

J'essaie d'entrer dans la communauté Clojure. J'ai beaucoup travaillé avec Python, et l'une des fonctionnalités que j'utilise beaucoup est la méthode zip (), qui permet d'itérer des paires de valeurs. Existe-t-il un moyen (intelligent et concis) d’atteindre le même objectif à Clojure?

Était-ce utile?

La solution

Une autre méthode consiste simplement à utiliser map avec une fonction qui collecte ses arguments dans une séquence, comme ceci:

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

Autres conseils

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

La itération sur les cartes se fait par paire, par exemple. comme ceci:

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

imprime:

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

La question a été résolue, mais il reste toujours entrelacement , qui gère également un nombre arbitraire de séquences, mais ne groupe pas la séquence résultante en tuples (mais vous pouvez utiliser la partition pour cela).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top