Коллекции на молнии - PullRequest
       26

Коллекции на молнии

4 голосов
/ 01 августа 2010

Как вы застегиваете две последовательности в Clojure?Итак, что такое Clojure-эквивалент Python zip(a, b)?

EDIT:
Я знаю, как определить такую ​​функциюМне просто интересно, предоставляет ли стандартная библиотека такую ​​функцию уже.(Я был бы * очень * удивлен, если это не так.)

Ответы [ 3 ]

3 голосов
/ 01 августа 2010

Вы можете легко определить функцию как почтовый индекс Python:

(defn zip
  [& colls]
  (apply map vector colls))

В случае (zip a b), это становится (map vector a b)

0 голосов
/ 02 августа 2010

Это достаточно близко?

(seq (zipmap [1 2 3] [4 5 6]))
;=> ([3 6] [2 5] [1 4])
0 голосов
/ 01 августа 2010

Если вы хотите, чтобы входные данные были списками, вы можете определить функцию zip следующим образом:

(defn zip [m] (apply map list m))

и назовите это так

(zip '((1 2 3) (4 5 6)))

этот вызов производит ((1 4) (2 5) (3 6))

...