簡體   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