Вычислительные функции по нескольким спискам - PullRequest
0 голосов
/ 19 ноября 2018

Мне нужно составить список, содержащий средние значения списков списков, в которых количество подсписков может варьироваться. Итак, учитывая список ввода:

((l1a l1b l1c) (l2a l2b l2c) (l3a l3b l3c)...)

вывод будет:

(average(l1a l2a l3a) average(l1b l2b l3b) average(l1c l2c l3c)...).

Я уверен, что есть действительно элегантный способ сделать это на языке LISP, но я не знаю, с чего начать. Любой совет будет принят с благодарностью.

1 Ответ

0 голосов
/ 19 ноября 2018
CL-USER 27 > (let* ((list-of-lists '((1.0 2.0 3.0)
                                     (1.0 3.0 5.0)
                                     (1.0 4.0 6.0)
                                     (1.0 5.0 8.0)))
                    (length (length list-of-lists)))
               (mapcar (lambda (x)
                         (/ x length))
                       (reduce (lambda (l1 l2)
                                 (mapcar #'+ l1 l2))
                               list-of-lists)))
(1.0 3.5 5.5)
...