8

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

4

3 回答 3

12

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

user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])
于 2009-06-17T19:34:06.973 回答
4
(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
于 2009-06-17T19:30:16.107 回答
3

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

于 2009-06-19T08:16:43.297 回答