2009-06-17 3 views
8

Clojure 커뮤니티에 들어가려고합니다. 저는 파이썬으로 많은 작업을 해왔고, 제가 많이 사용하는 기능 중 하나는 zip() 메소드로 값 쌍을 반복하는 것입니다. Clojure에서 같은 (달성하기위한 영리하고 짧은) 방법이 있습니까?Clojure에서 두 시퀀스의 값 쌍 처리

답변

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

질문을 하지만 아직 임의의 수의 시퀀스를 처리하지만 그 결과 시퀀스를 튜플로 그룹화하지는 않습니다 (하지만 partition을 사용할 수 있습니다 에서).