明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1031|回复: 9

【已解决】去除列表中的重复项

[复制链接]
发表于 2023-4-13 00:44:25 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2023-4-13 09:31 编辑

这个函数可以去除列表中的重复元素
  1. ;删除列表中重复的元素
  2. (defun K:DelSame (Lst)
  3.   (if Lst (cons (car Lst) (K:DelSame (vl-remove (car Lst) (cdr Lst)))))
  4. )



但这样用,输出的结果却没有任何变化,有大佬知道是为什么吗?
  1. (setq ss (ssget "F" (list (setq StaPt (getpoint)) (setq EndPt (getpoint)))));获取栏选选择集
  2. (setq IniLst   
  3.       (vl-remove-if-not
  4.           '(lambda (x) (<= (distance x StaPt) (+ 10.0 (distance StaPt EndPt))))
  5.           (vl-sort
  6.             (apply 'append (mapcar '(lambda (x) (mapcar 'cadr (cdddr x))) (ssnamex ss)));获取栏选交点
  7.             '(lambda (x y) (< (distance StaPt x) (distance StaPt y)));离起点越近越靠前
  8.           );交点排序
  9.       );过滤点:排除大于最大距离的点
  10. )
  11. (setq NewLst (K:DelSame IniLst));输出的结果没有删除重复项


 楼主| 发表于 2023-4-13 12:20:37 | 显示全部楼层
本帖最后由 kucha007 于 2023-4-13 14:49 编辑

试了几次最后发现是精度的问题,在leemac这里找到了更好的模糊函数

http://www.lee-mac.com/uniqueduplicate.html
发表于 2023-4-13 02:10:42 | 显示全部楼层
可以去除列表中的重复项

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-4-13 02:12:13 | 显示全部楼层

((1176.34 591.869 0.0) (1176.34 591.869 0.0) (1176.34 736.047 0.0) (1176.34
736.047 0.0) (1176.34 870.96 0.0) (1176.34 870.96 0.0) (1176.34 987.671 0.0)
(1176.34 987.671 0.0) (1176.34 1081.11 0.0) (1176.34 1081.11 0.0))
(setq NewLst (K:DelSame IniLst))得到

((1176.34 591.869 0.0) (1176.34 736.047 0.0) (1176.34 870.96 0.0) (1176.34
987.671 0.0) (1176.34 1081.11 0.0))

 楼主| 发表于 2023-4-13 07:57:09 | 显示全部楼层
飞雪神光 发表于 2023-4-13 02:12
((1176.34 591.869 0.0) (1176.34 591.869 0.0) (1176.34 736.047 0.0) (1176.34
736.047 0.0) (1176.3 ...

感谢。。我昨天试了半天不行,今天重启电脑居然可以了
发表于 2023-4-13 10:35:43 | 显示全部楼层
笨办法,新建一个空表AA,对于BB中的元素,
如果不在AA里面,就添加到AA里面,
如果在AA里面,就不添加进去。
这样不也就去重了吗?
 楼主| 发表于 2023-4-13 11:24:14 | 显示全部楼层
xiaomm250 发表于 2023-4-13 10:35
笨办法,新建一个空表AA,对于BB中的元素,
如果不在AA里面,就添加到AA里面,
如果在AA里面,就不添加进 ...

是的,只不过感觉这种方法不够妙
发表于 2023-4-18 09:58:50 | 显示全部楼层
kucha007 发表于 2023-4-13 11:24
是的,只不过感觉这种方法不够妙

最笨的办法才是最好的办法!
 楼主| 发表于 2023-4-18 10:24:20 | 显示全部楼层
xiaomm250 发表于 2023-4-18 09:58
最笨的办法才是最好的办法!

lee mac的递归就很nice
发表于 2023-4-23 12:31:48 | 显示全部楼层
kucha007 发表于 2023-4-18 10:24
lee mac的递归就很nice

他的办法很难读懂,很不好!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:21 , Processed in 0.180695 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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