Clojure의 두 시퀀스에서 값 쌍을 처리합니다
문제
나는 Clojure 커뮤니티에 들어가려고 노력하고 있습니다. 나는 Python으로 많이 작업 해 왔으며, 내가 광범위하게 사용하는 기능 중 하나는 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
그에 대한).
제휴하지 않습니다 StackOverflow