明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2089|回复: 5

检查表内是否有重复项(明镜亦非台)

[复制链接]
发表于 2011-9-20 00:26 | 显示全部楼层 |阅读模式
              没有更高的手段,只能用笨办法。。。求一个更精简的程序!!!吼吼
;;;检查表内是否有重复项
;;;2011年9月20日 00:15:55 By 明镜亦非台
(defun jccfbymjyft(lst / len n y y2 leng nlist);;;第一次搞会这个局部变量的用法,庆祝一下
  (setq len (vl-list-length lst));;原表
  (setq n 0)
  (setq nlist '())
  (while (< n len)
     (setq y(nth n lst))
     (setq y2(vl-remove y lst))
    (setq leng(- len (vl-list-length y2)))
    (if (/= leng 1)
      (progn
      (setq nlist (append nlist (list y)))
     );progn
     );if
    (setq n(1+ n))
    );while
  nlist
  );defun

(defun c:ww();测试
  (setq lsttt '(1 2 3 3 3 5 6 q q 明镜 不是 明经 也不是 明镜 44 44 8 8 6))
  (setq aa(jccfbymjyft lsttt))
  )
;;;返回  (3 3 3 6 Q Q 明镜 明镜 44 44 8 8 6)

 楼主| 发表于 2011-9-20 01:00 | 显示全部楼层
(defun test (lst / lst2)
  (foreach x lst
    (if (member x (cdr (member x lst)))
      (setq lst2 (append lst2 (list x)))
      )
    )
  lst2
  )
;;;(test '(1 2 3 3 3 5 6 8 8 6))

caoyin版主的程序,精简得多。呵呵

点评

对一般的字符串或常量之类没问题,对有容差问题的点之类的不适用  发表于 2012-1-6 20:09
发表于 2012-1-6 19:53 | 显示全部楼层
  版主是自问自答啊,学习了
发表于 2012-1-10 13:14 | 显示全部楼层
感觉木啥用
发表于 2013-6-21 12:07 | 显示全部楼层
非常有用的小程序,进行统计,检查是否有重复编号的时候会用到。
发表于 2018-10-20 23:58 | 显示全部楼层
很棒的小程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 06:48 , Processed in 0.216162 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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