有一个不稳定的陈述:
(defconstant *contant2* ’((Allan 4) (Zols 5) (Milo 2) (Judh 0)))
我想从此常量中分离名称和与名称关联的值。我怎么能这样做?
给出口味分数:((name-1 score-1) ... (name-n score-n))
作为参数,LISP功能,其中得分和其他产生单词分数(9-10是VeryGood,7-8是好)。
(defconstant contant2 '((Allan 4)(Zols 5)(Milo 2)(Judh 0)))
我感谢任何帮助!感谢。
答案 0 :(得分:2)
回答你的直接问题:
? (mapcar #'car *cookie-scores*)
(JOHN MARY MIKE JANE)
? (mapcar #'cadr *cookie-scores*)
(8 9 1 0)
在loop
中,您可以使用loop
的解构:
for (name val) in
有其他选择;这里是我将保留未注释的所需功能的2个示例实现; 请提出问题或向我们展示您的代码。
(defun average-score (lst)
(/ (reduce #'+ lst :key #'cadr) (length lst))))
? (average-score *cookie-scores*)
9/2
和
(defun word-scores (lst)
(loop
for (name val) in lst
collect (list name
(cond
((> val 8) 'Excellent)
((> val 6) 'Tasty)
((> val 0) 'Terrible)
(t 'Garbage)))))
? (word-scores *cookie-scores*)
((JOHN TASTY) (MARY EXCELLENT) (MIKE TERRIBLE) (JANE GARBAGE))