(defun c:test() (setq lst '((2.6 "1910") (3.6 "XS") (4.7 "1910") (5.6 "XS") (4.7 "1911") (7.8 "1910") (10.1 "XS"))) (setq newlst nil) (while lst (setq n 0) (foreach i lst(if (= (cadar lst) (cadr i))(setq n (+ n (car i))))) (setq newlst (append newlst (list (list n (cadar lst))))) (setq lst(vl-remove-if '(lambda (x) (= (cadar lst) (cadr x))) lst)) ) newlst ) 命令: test ((15.1 "1910") (19.3 "XS") (4.7 "1911")) 没有限制 只要你内存够就行 因为整个Lisp程序都可以看做是一个表 |