我有两个列表,每个列表中都有一个列表。我想每次从第一个列表中获取第三个值,并从第二个列表中获取第一个值,将这些项目相乘,然后将它们相加。
(defvar *list-1* ((item1 1 4) (item2 4 5) (item3 5 8)))
(defvar *list-2* ((1) (3) (5)))
所以我想要(1 * 4)+(3 * 5)+(5 * 8)= 59
到目前为止,我有以下代码
(defun get-total (lst lst1)
(loop :for element :in lst
:for element1 :in lst1
:sum (third element)))
loop可以为您做一些破坏,因此您甚至不需要调用third,而只需在第一个列表中循环(nil nil a),它将a绑定到第三个值。您可以使用第二个列表执行相同的操作,但使用解构列表(b)除外。然后您将拥有:
(loop :for (nil nil a) :in '((item1 1 4) (item2 4 5) (item3 5 8))
:for (b) :in '((1) (3) (5))
:summing (* a b))
;=> 59
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句