厉害,与众不同 鱼与熊掌 发表于 2015-2-25 18:58 static/image/common/back.gif
(defun cx-lst-delsame(lst fuzz / runlst)
(while(setq runlst(cons(car lst)runlst)
lst(vl-remove-if'(lambda(x)(equal x(car lst)fuzz))(cdr lst))))
(reverse runlst)
) llsheng_73 发表于 2015-3-12 03:08 static/image/common/back.gif
bucuo不错. 请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2""AL2" )
即反向操作留下重复的? softbird 发表于 2019-5-28 16:47
请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2""AL2" )
即反向操作留下重复的?
倒立着写代码 softbird 发表于 2019-5-28 16:47
请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2""AL2" )
即反向操作留下重复的?
准备两个表,一个是重复的,一个是不重复的。用member判断一下,就可以了。 本帖最后由 highflybird 于 2019-5-28 19:16 编辑
提供一个简单的函数,不希望用member函数,对大数据的有可能提高效率
(defun RemDupAndSort (lst / l a)
(foreach n (vl-sort lst '>) ;这个地方的大于函数可以替换成你需要的函数
(if (= a n) ;这个地方的相等比较可以替换成你需要的函数
l
(setq a n l (cons n l))
)
)
)
在要求效率的场合,要慎用member, 对上面的函数来说,如果用member。对上面的这个歌函数来说,时间可能是O(n^2),而用foreach 函数,不过是排序的时间加O(n)时间,总的来说还是O(log(n)).
各位有兴趣的话,不妨自我测试一下。
页:
1
[2]