1. (defun same(l1 / l2);;;查找表中重复元素
    2. (while l1 (if (member (car l1) (cdr l1)) (setq l2 (append l2 (list (car l1))))) (setq l1 (vl-remove (car l1) l1)))
    3. l2
    4. )
    5. (defun sametimes(l1);;;;表中重复元素及其重复次数
    6. (mapcar '(lambda(x) (cons x (- (length l1) (length (vl-remove x l1)))))
    7. (same l1))
    8. )
    9. (defun Sametimes(l1 / l2);;;表中重复元素及其重复次数,比前边一个快
    10. (while (setq l2 (if (member (car l1) (cdr l1)) (cons (list (car l1) (- (length l1) (length (vl-remove (car l1) l1)))) l2) l2) l1 (vl-remove (car l1) l1)))
    11. (reverse l2)
    12. )
    13. (defun etimes(l1 / l2);;;所有元素的出现次数
    14. (while (setq l2 (cons (list (car l1) (- (length l1) (length (vl-remove (car l1) l1)))) l2) l1 (vl-remove (car l1) l1)))
    15. l2
    16. )
    17. (defun desame(l1 / l2);;;表中去除重复元素(重复过的不出现)
    18. (last (mapcar '(lambda(x) (setq l1 (vl-remove x l1))) (same l1)))
    19. )
    20. (defun delsame(l1 / l2);;表中去除重复元素(重复过的取第一次出现)
    21. (while (setq l2 (cons (car l1) l2) l1 (vl-remove (car l1) (cdr l1))))
    22. (reverse l2)
    23. )
    24. (defun delsameat(l1 n / l2 a);;;指定几项相同去重,重复时取第一次出现
    25. (if n (setq l1(mapcar'(lambda(x)(cons(mapcar'(lambda(y)(nth y x))n)x))l1)))
    26. (while (setq a (caar l1) l2 (cons (cdar l1) l2) l1 (vl-remove-if '(lambda(x) (equal (car x) a)) (cdr l1))))
    27. (reverse l2)
    28. )
    29. (defun delsame(l1 rcz / l2);;带容差去重(重复过的取第一次出现),有时处理坐标点需要考虑容差
    30. (while l1
    31. (setq l2 (cons(car l1)l2)l1(vl-remove-if'(lambda (x)(equal(car l1)x rcz))(cdr l1))))
    32. (reverse l2)
    33. )
    34. (defun delsame (l1 / L2 X);;重复过的取第一次出现(不带容差)根据自贡黄明儒的修改,只改了写法,所以版权属于自贡黄明儒,转载或者使用此函数请尽可能征得原作者同意并保留以下作者信息)
    35. ;by自贡黄明儒
    36. (while (setq x (car l1) l2 (cons x l2) l1 (cdr l1))
    37. (if (member x l1) (setq l1 (vl-remove x l1))))
    38. (reverse l2)
    39. )
    40. (defun delsames(l1 rcz / a l l2);;带容差去重(重复过的不出现),有时处理坐标点需要考虑容差
    41. (while (setq a (car l1) l2 (vl-remove-if '(lambda (x) (<= (distance a x) rcz)) (cdr l1)));;;(equal a x rcz)
    42. (if (= (1+ (length l2)) (length l1)) (setq l (cons a l)))
    43. (setq l1 l2)
    44. )
    45. (if (= (1+ (length l2)) (length l1)) (setq l (cons a l)))
    46. (reverse l)
    47. )
    48. ;;;(delsame '((1.00001 2 3) (2 3 4) (1.00002 2.000002 3) (3 4 5)) 0.0001)
    49. ;;;((1.00001 2 3) (2 3 4) (3 4 5))
    50. ;;;(setq l1'(1 2 3 3 3 5 6 8 8 6))
    51. ;;;(SAME l1)
    52. ;;;(3 6 8)
    53. ;;;(desame l1)
    54. ;;;(1 2 5)
    55. ;;;;(sametimes '(1 2 2 3 4 5 5 5 5 6 7 8 9 0));;;;((2 . 2) (5 . 4))