[求助]表中元素如何相加
本帖最后由 作者 于 2009-3-17 17:53:36 编辑 <br /><br /> <p>有一个表((2.6 "1910") (3.6 "XS") (4.7 "1910") (5.6 "XS") (4.7 "1911") (7.8 "1910") (10.1 "XS") 。。),如何合并成</p><p>((15.1 "1910") (4.7 "1911") (19.3 "XS") 。。),就是把子表中Y相同的X值相加。别外问一下一个表中的子表数量是否有限制?先谢谢了</p> <p>(defun c:test()<br/> (setq lst '((2.6 "1910") (3.6 "XS") (4.7 "1910") (5.6 "XS") (4.7 "1911") (7.8 "1910") (10.1 "XS")))<br/> (setq newlst nil)<br/> (while lst<br/> (setq n 0)<br/> (foreach i lst(if (= (cadar lst) (cadr i))(setq n (+ n (car i)))))<br/> (setq newlst (append newlst (list (list n (cadar lst)))))<br/> (setq lst(vl-remove-if '(lambda (x) (= (cadar lst) (cadr x))) lst))<br/> )<br/> newlst<br/>)</p><p>命令: test<br/>((15.1 "1910") (19.3 "XS") (4.7 "1911"))</p><p>没有限制 只要你内存够就行 因为整个Lisp程序都可以看做是一个表</p> 谢谢<strong><font face="Verdana" color="#61b713">nonsmall</font></strong> 做成个子函数很有用啊
页:
[1]