我目前有一个列表,如:
((地图9 150)(指南针13 35)(水150 240)(三明治50 16)(绳50 49))
我试图循环这个列表获取粗体值,并给出这些值的总和.我一直在看汽车和司机,但我似乎无法获得这些价值观.有一个简单的方法吗?
Syl*_*ter 10
这将是third列表中的值或caddr.从而
(mapcar #'third products) ; ==> (150 35 240 16 49)
Run Code Online (Sandbox Code Playgroud)
如果您的清单很小,您可以使用申请:
(apply #'+ (mapcar #'third products)) ; ==> 490
Run Code Online (Sandbox Code Playgroud)
对于更大的列表(超过1000),我建议使用 reduce
(reduce #'+ (mapcar #'third products)) ; ==> 490
Run Code Online (Sandbox Code Playgroud)
有了reduce您可以使用:key,以避免mapcar:
(reduce #'+ products :key #'third) ; ==> 490
Run Code Online (Sandbox Code Playgroud)
您还可以使用loop:
(loop :for element :in products
:sum (third element)) ; ==> 490
Run Code Online (Sandbox Code Playgroud)