繁体   English   中英

处理来自 Clojure 中两个序列的值对

[英]Processing pairs of values from two sequences in Clojure

我正在尝试加入 Clojure 社区。 我经常使用 Python,我广泛使用的功能之一是 zip() 方法,用于迭代值对。 在 Clojure 中是否有一种(聪明而简短的)方法来实现相同的目标?

另一种方法是简单地将 map 与一些 function 一起使用,按顺序收集其 arguments,如下所示:

user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])
(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}

迭代地图是成对发生的,例如:

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

印刷:

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

问题已经得到解答,但仍然存在interleave ,它也处理任意数量的序列,但不会将结果序列分组为元组(但您可以为此使用partition )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM