2009-06-17 3 views
8

私はClojureコミュニティに参加しようとしています。私はPythonで多くの作業をしてきました。私が大いに活用している機能の1つは、zip()メソッドで、値のペアを繰り返し処理しています。 Clojureで同じことを達成する(巧妙で短い)方法がありますか?Clojureの2つのシーケンスからの値のペアの処理

答えて

12

もう一つの方法は、単純にこのように、順番に引数を収集し、いくつかの機能と一緒にマップを使用することです:

user=> (map vector '(1 2 3) "abc") 
([1 \a] [2 \b] [3 \c]) 
+0

この例では、3つのシーケンスを処理できました。 – Thomas

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 
+0

私はこのアプローチをテストしましたが、3つ以上のシーケンスを処理できませんでした。私は最初の質問にその要件を言及すべきだった、申し訳ありません。 – Thomas

3

質問答えはありましたが、依然としてinterleaveがあります。これも任意の数のシーケンスを扱いますが、結果のシーケンスをタプルにグループ化しません(ただし、partitionはth at)。

関連する問題