Clojureの2つのシーケンスからの値のペアの処理
質問
Clojureコミュニティに参加しようとしています。私はPythonで多くの仕事をしてきましたが、私が広範囲に利用している機能の1つは、値のペアを反復処理するためのzip()メソッドです。 Clojureで同じことを達成する(賢くて短い)方法はありますか?
解決
別の方法は、次のように、引数をシーケンスで収集する関数と一緒に単純にマップを使用することです:
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
for))。
所属していません StackOverflow