c3a139 发表于 2009-3-17 17:52:00

[求助]表中元素如何相加

本帖最后由 作者 于 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>

nonsmall 发表于 2009-3-17 18:47:00

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

c3a139 发表于 2009-3-18 11:24:00

谢谢<strong><font face="Verdana" color="#61b713">nonsmall</font></strong>

烟盒迷唇 发表于 2021-11-21 20:16:06

做成个子函数很有用啊
页: [1]
查看完整版本: [求助]表中元素如何相加