列表去除重复项,有重复的保留1次
;列表去除重复项,有重复的保留1次;(qcchongfu '(1 2 1 2 3 4 5 1))-> (2 3 4 5 1)
(defun qcchongfu(sjb / newb)
(setq newb sjb)
(foreach a sjb
(setq newb(append (vl-remove a newb)(list a)))
)
newb
)
(defun LM:Unique (l)
;;;;;;删除表中重复项无容差
(if l
(cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))
)
)
leemac大神的,可以是嵌套表,对元素没有要求,数字。字符串、表都可以。楼主发的只能一个表。
leemac有一些递归函数很精妙
正能量的一诺 发表于 2023-2-27 15:34
递归数据多了好像就卡住了,怎么办
我只了解一点,递归是栈之类的,会占用内存。原理是把所有数据读取出来储存在内存中,直到最后一个有返回值,才会回收前面的栈,如果数据很大,就会栈溢出。通俗说法是,用内存换效率,内存不够,就用其他办法吧 (defun LM:RemoveNth (n l)
;;;;去除第N项
(if (and l (< 0 n))
(cons (car l) (LM:RemoveNth (1- n) (cdr l)))
(cdr l)
)
)
这个递归也很精妙 (defun delsame(l1 / l2)
(while(setq l2(cons(car l1)l2)l1(vl-remove(car l1)(cdr l1))))
(reverse l2)
)
也是论坛之前看到的,忘了是那个大佬的了。 支持一下 . jun353835273 发表于 2023-1-10 10:31
也是论坛之前看到的,忘了是那个大佬的了。
这个写法厉害了,简洁粗暴,赞 jun353835273 发表于 2023-1-10 10:31
也是论坛之前看到的,忘了是那个大佬的了。
这写法厉害了 liuhe 发表于 2023-1-10 14:43
leemac大神的,可以是嵌套表,对元素没有要求,数字。字符串、表都可以。楼主发的只能一个表。
leemac ...
果然很精妙,学习了 jun353835273 发表于 2023-1-10 10:31
也是论坛之前看到的,忘了是那个大佬的了。
这写法厉害了,我测试过 学习了,感谢大佬~~~
页:
[1]
2