J'essaie d'entrer dans la communauté Clojure. J'ai beaucoup travaillé avec Python, et l'une des fonctionnalités que j'utilise énormément est la méthode zip(), pour l'itération de paires de valeurs. Y a-t-il une manière (intelligente et courte) de réaliser la même chose dans Clojure?Traitement de paires de valeurs à partir de deux séquences dans Clojure
8
A
Répondre
12
Une autre façon est d'utiliser simplement la carte avec une fonction qui recueille ses arguments dans une séquence, comme ceci:
user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])
4
(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}
L'itération sur des cartes se fait par paires, par ex. comme ceci:
(doseq [[k v] (zipmap [:a :b :c] (range 3))]
(printf "key: %s, value: %s\n" k v))
impressions:
key: :c, value: 2
key: :b, value: 1
key: :a, value: 0
+0
J'ai testé l'approche, et elle ne pouvait pas gérer trois séquences ou plus. J'aurais dû mentionner cette exigence dans la question initiale, désolé. – Thomas
3
La question a été répondu, mais il reste interleave
, qui gère également un nombre arbitraire de séquences, mais ne regroupe pas la séquence résultante en tuples (mais vous pouvez utiliser partition
pour le à).
Questions connexes
- 1. Fusionner deux tableaux en tant que paires de valeurs clés dans PHP
- 2. Indexation d'un ensemble de valeurs de paires de clés à utiliser dans l'application J2ME
- 3. Nom Paires de valeurs et tables de faits
- 4. Calculer toutes les paires possibles d'éléments à partir de deux listes?
- 5. Dessin de valeurs générées automatiquement à partir de la même séquence sur deux tables
- 6. convertir les paires de valeurs de nom en xml
- 7. Traitement des valeurs nulles à partir de la base de données
- 8. Expression régulière pour l'analyse des paires de valeurs de nom
- 9. OCaml: Permutation de chaque valeur dans deux ensembles? (comment traduire cela à partir de Java)
- 10. Dictionnaire ThreadSafe ... Paires de valeurs clés Enumerable? (.net)
- 11. Impression de valeurs à partir de l'objet
- 12. récursif (doall) dans clojure
- 13. Comment générer un ID à partir des séquences de première lettre de contenu dans xslt?
- 14. Envoi de séquences de touches à contrôler dans .Net
- 15. Oracle: aplatissement des paires de valeurs de nom dans une table
- 16. Problème de compilation dans Clojure
- 17. SQL: filtre sur une combinaison de deux valeurs de colonne
- 18. valeurs de mappage de tableau à deux en Ruby
- 19. Instruction SQL à partir de deux tables
- 20. tsql, la cueillette des valeurs paires
- 21. Une carte bidirectionnelle à clojure?
- 22. Octet Traitement des fichiers PDF à partir de SQL varbinary
- 23. Comment me connecter à une base de données MySQL à partir de Clojure?
- 24. données d'entrée de traitement à partir d'un téléphone si SMS
- 25. Créer des paires possibles indépendamment de l'ordre dans un ensemble indéfini de valeurs
- 26. Appel de Clojure de R?
- 27. Éviter le débordement de pile (avec des séquences infinies de séquences F #)
- 28. Une procédure SQL efficace pour obtenir des données de la table de paires de valeurs de nom dans DataSet?
- 29. Comment puis-je créer un seul cookie et y enregistrer plusieurs paires de valeurs/valeurs?
- 30. Clojure Vecteur de Refs
Cet exemple a pu gérer trois séquences, merci. – Thomas