我正在尝试进入 Clojure 社区。我一直在使用 Python,我广泛使用的功能之一是 zip() 方法,用于迭代成对的值。在 Clojure 中是否有一种(聪明而简短的)方法可以实现相同的目标?
问问题
2242 次
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 回答