明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1229|回复: 6

[源码] 怎样将表内X相同的Y值累加

[复制链接]
发表于 2011-1-13 12:42 | 显示全部楼层 |阅读模式
如何表将ptn=((100 63)(90 86)(90 75)(90 63)(80 25)(80 52)(70 26))累加成ptn=((100 63)(90 224)(80 77)(70 26))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-1-13 13:21 | 显示全部楼层
回复 lht 的帖子

  1. (defun c:tt(/ rtn)
  2.   (setq ptn '((100 63)(90 86)(90 75)(90 63)(80 25)(80 52)(70 26)));累加成ptn=((100 63)(90 224)(80 77)(70 26))
  3.   (while ptn
  4.     (setq a (car ptn)
  5.    ptn (cdr ptn)
  6.    )
  7.     (setq b (car a))
  8.     (if (setq c (assoc b rtn))
  9.       (progn
  10. (setq c (list b (+ (cadr c) (cadr a))))
  11. (setq rtn (subst c (assoc b rtn) rtn))
  12. )
  13.       (progn
  14. (setq rtn (cons a rtn))
  15. )
  16.       )
  17.       
  18.     )
  19.   (reverse rtn)
  20.   )

 楼主| 发表于 2011-1-16 00:02 | 显示全部楼层
谢谢大侠的帮忙!
发表于 2011-1-16 11:40 | 显示全部楼层
本帖最后由 yoyoho 于 2011-1-16 11:42 编辑

感谢Gu_xl版主分享学习了!
发表于 2011-1-16 15:10 | 显示全部楼层
感谢版主,学习了。
发表于 2011-1-17 12:21 | 显示全部楼层
本帖最后由 露水2 于 2011-1-17 12:32 编辑


  1. (defun c:test()
  2. (setq lst '((100 63)(90 86)(90 75)(90 63)(80 25)(80 52)(70 26)));累加成ptn=((100 63)(90 224)(80 77)(70 26))
  3. (setq nlst '())
  4. (while lst
  5.       (setq ahlst '()
  6.             a (car (car lst))
  7.       )
  8.       (foreach x lst
  9.             (setq b (car x))
  10.   (if (= a b) (setq ahlst (cons (cadr x) ahlst)))
  11. );foreach
  12.     (setq nlst (cons (list a (apply '+ ahlst)) nlst)
  13.          lst (vl-remove-if '(lambda(y) (= (car y) a)) lst)
  14.    )
  15.   );while
  16.   (setq nlst (reverse nlst))
  17.   )

和gu_xl有点类似 但是我的有点慢

发表于 2011-1-17 13:50 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-16 12:19 , Processed in 0.140856 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表