明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1826|回复: 9

移除表中重复项(适用于任何表)【能否在简化】

[复制链接]
发表于 2012-12-15 00:31:00 | 显示全部楼层 |阅读模式
;测试(vl-removes '((2162.48 1434.06 0.0) (2433.05 1163.76 0.0) (2433.05 1163.76 0.0) (2433.05 1163.76 0.0)))
;测试(vl-removes (list 1 2 1 2 3))
;;;移除表中重复项

(defun vl-removes (lst)
    (foreach  X lst
        (setq lst (append (vl-remove X lst) (list X)))
    )
)

能否在简化或其他方法写更简单
发表于 2012-12-15 11:36:12 | 显示全部楼层
(defun delsame (l)
  (if l
     (cons (car l) (delsame (vl-remove (car l) (cdr l)))
)
)
 楼主| 发表于 2012-12-15 12:59:02 | 显示全部楼层
Gu_xl 发表于 2012-12-15 11:36
(defun delsame (l)
  (if l
     (cons (car l) (delsame (vl-remove (car l) (cdr l)))

好像没这个函数的说明啊  delsame
发表于 2012-12-15 13:01:55 | 显示全部楼层
yanguangfei 发表于 2012-12-15 12:59
好像没这个函数的说明啊  delsame

这是函数调用自身完成循环。有点绕。
发表于 2012-12-15 13:10:50 | 显示全部楼层
我的简单易懂
(defun T1 (Lst / LstNew)
  (SETQ LstNew '())
  (foreach _LstItem Lst
    (if (not (member _LstItem LstNew))
      (setq LstNew (CONS _LstItem LstNew))
    )
  )
  LstNew
)
发表于 2012-12-15 13:19:23 | 显示全部楼层
坐标点位就不好用!
发表于 2012-12-15 13:34:07 | 显示全部楼层
本帖最后由 Gu_xl 于 2012-12-15 13:34 编辑
cable2004 发表于 2012-12-15 13:19
坐标点位就不好用!

  1.    (defun DumpPt (l fuzz )
  2.   (if l
  3.     (cons (car l)
  4.           (DumpPt
  5.             (vl-remove-if '(lambda (x) (equal (car l) x fuzz)) (cdr l))
  6.             fuzz
  7.           )
  8.     )
  9.   )
  10. )

点评

必须承认要不断向G版学习  发表于 2012-12-23 09:02
发表于 2012-12-15 14:20:00 | 显示全部楼层
拜读G的强大,套内套子程序不好理解。不过比我的简单!
发表于 2012-12-15 15:37:32 | 显示全部楼层
递归啊,我什么时候可以明白你的心
发表于 2012-12-15 16:09:45 | 显示全部楼层
如果处理数据量过大的化,过于简化和递归会让你的内存快速耗尽。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-3 10:31 , Processed in 0.177254 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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