我需要生成一个列表,其中包含列表列表的平均值,其中子列表的数量可能会有所不同.所以给出输入列表:
((l1a l1b l1c) (l2a l2b l2c) (l3a l3b l3c)...)
Run Code Online (Sandbox Code Playgroud)
输出将是:
(average(l1a l2a l3a) average(l1b l2b l3b) average(l1c l2c l3c)...).
Run Code Online (Sandbox Code Playgroud)
我确信在lisp中有一个非常优雅的方法可以做到这一点,但我不知道从哪里开始.我们将非常感激地收到任何建议.
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)
Run Code Online (Sandbox Code Playgroud)