明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2748|回复: 12

[提问] 有没有这样的一个分类统计函数?

[复制链接]
发表于 2014-7-23 09:33:25 | 显示全部楼层 |阅读模式
假设表 lst 有很多相同的座标点,怎样才可以将表中相同的座标点分类统计出来?
(setq lst (list '(0 0 1) '(0 1 0) '(0 1 1) '(10 1 1) '(0 1 0) '(10 1 1) )




发表于 2014-7-23 09:42:36 | 显示全部楼层
(equal '(0 0 1)'(0 0 1))
 楼主| 发表于 2014-7-23 12:10:22 | 显示全部楼层
本帖最后由 sunnylhj 于 2014-7-23 14:06 编辑
longcashman 发表于 2014-7-23 09:42
(equal '(0 0 1)'(0 0 1))

我的意思是将相同的统计出来,像:'(0 1 0)=2个,'(10 1 1)=2个

点评

哪来的2个’(0 0 1) ?  发表于 2014-7-23 12:51
发表于 2014-7-23 12:50:34 | 显示全部楼层
(setq lst '((0 0 1) (0 1 0) (0 1 1) (10 1 1) (0 1 0) (10 1 1)))
(xyp-List-CountSub (xyp-Sort-PtnByXYZ lst))

‘(((0 0 1) 1) ((0 1 0) 2) ((0 1 1) 1) ((10 1 1) 2))

点评

(xyp-List-CountSub (xyp-Sort-PtnByXYZ lst)) 这个都是定义函数吗?  发表于 2014-7-23 14:08
发表于 2014-7-24 11:41:52 | 显示全部楼层
  1. (defun delsame (l1 / l2)
  2.   ;;表中去除重复元素(重复过的取第一次出现)by llsheng_73
  3.   (while (setq l2 (cons (car l1) l2)
  4.                l1 (vl-remove (car l1) (cdr l1))
  5.          )
  6.   )
  7.   (reverse l2)
  8. )
  9. (defun count (alst / i rlst)
  10.   (setq blst alst)
  11.   (foreach a alst
  12.     (setq i 0)
  13.     (foreach b blst
  14.       (if (equal a b)
  15.         (setq i (1+ i))
  16.       )
  17.     )
  18.     (setq rlst (append (list (cons a (list i))) rlst))
  19.   )
  20.   (delsame rlst)
  21. )
  22. ;(setq alst '((0 0 1) (0 1 0) (0 1 1) (10 1 1) (0 1 0) (10 1 1)))
  23. ;(count alst)
  24. ;-->(((10 1 1) 2) ((0 1 0) 2) ((0 1 1) 1) ((0 0 1) 1))

如果数据大,我觉得院长的应该比较快
发表于 2014-7-24 13:34:40 | 显示全部楼层
这个应该简单啊。楼主应尝试自己写!

我写了个 好像可以!
  1. (defun t11 (lst)
  2.     (while lst
  3.         (setq a(car lst)b(length lst)lst(vl-remove a lst))
  4.         (setq l (cons (list a (- b (length lst))) l))
  5.     )
  6. )
发表于 2014-7-24 16:05:22 | 显示全部楼层
wowan1314 发表于 2014-7-24 13:34
这个应该简单啊。楼主应尝试自己写!

我写了个 好像可以!
  1. (setq l (cons (list a (- b (length lst))) l))
求解释!
发表于 2014-7-24 16:09:53 | 显示全部楼层
我明白了
消重之后少掉的就是重复的
果然思路最重要啊
发表于 2014-7-24 16:55:59 | 显示全部楼层
个人觉得点值应该用equal +fuzz
发表于 2014-7-24 17:03:49 | 显示全部楼层
edata 发表于 2014-7-24 16:55
个人觉得点值应该用equal +fuzz

严谨
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 09:46 , Processed in 0.173150 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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