本帖最后由 llsheng_73 于 2013-11-28 17:46 编辑
 - (defun tt(lst / a ll)
- (while lst(setq a(car lst)lst(vl-remove a lst)ll(cons a ll)))
- (reverse ll))
这个去除所有重的,下边去除连续相同的
 - (defun tt(lst / a ll)
- (while lst(setq a(car lst)lst(cdr lst)ll(if(not(equal(car ll)a))(cons a ll)ll)))
- (reverse ll))
简单是简单了但表有多长得处理多少次,对于表很大,连续项也比较长的话下边这个效率会高些
 - (defun tt(lst / a ll l2)
- (setq ll lst)
- (while ll(setq a(car ll)ll(vl-remove a ll)l2(cons a l2)))
- (setq l2(reverse l2))
- (while lst(setq a(car lst)
- l2(if(member a l2)(cdr l2)l2)
- lst(member (car l2)lst)
- ll(if(not(equal(car ll)a))(cons a ll)ll)))
- (reverse ll))
但对代码明显复杂了好多,对于表不大相同项也不多的情况下估计还不如上边一个 |