@stakhovyak

Как последовательно вычесть два списка в Clojure?

Допустим у меня есть (list x x1 x2 ... xN) и (list y y1 y2 ... yN), я хочу получить (list (x-y) (x1-y1) (x2-y2) ... (xN - yN)).
Помогите пожалуйста! ;)
  • Вопрос задан
  • 34 просмотра
Решения вопроса 2
Real_Fermer
@Real_Fermer
Программист PHP
Можно использовать функцию map и операцию вычитания:
(defn subtract-lists [lst1 lst2] (map - lst1 lst2)) (subtract-lists '(1 2 3) '(4 5 6)) ; => (-3 -3 -3)

Если нужно получить список, а не последовательность, можно обернуть результат в list:
(defn subtract-lists [lst1 lst2] (list (map - lst1 lst2))) (subtract-lists '(1 2 3) '(4 5 6)) ; => ((-3 -3 -3))
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Функция map - https://clojuredocs.org/clojure.core/map
(map - ;; указываем функцию
     [1 2 3] ;; список один
     [3 2 1] ;; список два
)
;; => (-2 0 2)\
;; или
(map (fn [x y] (- x y))
     [1 2 3]
     [3 2 1])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы