我目前有一个列表:
<(>(图9 150 )(指南针13 35 )(水150 240 )(夹心50 16 >)(绳子50 49 ))
我正在尝试遍历此列表,以粗体显示值并总计这些值。我一直在看汽车和司机,但我似乎无法获得这些价值观。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:10)
这将是列表中的third
值或caddr
。因此
(mapcar #'third products) ; ==> (150 35 240 16 49)
如果您的列表很小,您可以使用apply:
(apply #'+ (mapcar #'third products)) ; ==> 490
对于更大的列表(超过1000个),我建议使用reduce
(reduce #'+ (mapcar #'third products)) ; ==> 490
使用reduce
,您可以使用:key
来避免mapcar
:
(reduce #'+ products :key #'third) ; ==> 490
您还可以使用loop
:
(loop :for element :in products
:sum (third element)) ; ==> 490