疑问:vl-sort 对数值表排序,实数表不会删除重复值,整数表就可以删除。
[*]疑问:vl-sort 对数值表排序,实数表不会删除重复值,整数表就可以删除。这个函数是我用的不对吗。
[*](vl-sort '(16 16 14 14 14 14 14) '>)结果是(16 14)
[*](vl-sort '(16.0 16.0 14.2 14.2 14.2 14.2 14.2) '>)结果是(16.0 16.0 14.2 14.2 14.2 14.2 14.2)。
就是这个样子的。如果不想被删除,则转成字符 自贡黄明儒 发表于 2016-9-30 11:01
就是这个样子的。如果不想被删除,则转成字符
多谢黄工指点,我想让他删除重复的,因为原始是字符,我怕没法排序atof成实数的。我再写个lambda吧,就是不大会用无名函数。 dragoon33333 发表于 2016-9-30 11:25
多谢黄工指点,我想让他删除重复的,因为原始是字符,我怕没法排序atof成实数的。我再写个lambda吧,就是 ...
先定义defun ,写完后把defun换成lambda ,去除defun后面那个名称,就是lambda函数了。 自贡黄明儒 发表于 2016-9-30 11:32
先定义defun ,写完后把defun换成lambda ,去除defun后面那个名称,就是lambda函数了。
多谢,我再研究下。在看您的“点表排序、图元坐标点排序-----通吃-----再浓缩----最终版2014.2.22”。我再看下您的“带容差去除相同图元”。 本帖最后由 自贡黄明儒 于 2016-9-30 11:45 编辑
;;(setq Lst '("16.0" "16.0" "14.2" "14.2" "14.2" "14.2" "14.2"))
;;(w1 Lst)=>("16.0" "14.2")
(defun w1 (Lst / A L)
(while (setq a (car Lst))
(setq Lst (cdr Lst))
(cond ((not (member a L)) (setq L (cons a L))))
)
(reverse L)
)
;;(setq Lst '("16.0" "16.0" "14.2" "14.2" "14.2" "14.2" "14.2"))
;;(w1 Lst)=>("14.2" "16.0")
(defun w1 (Lst / A L)
(while (setq a (car Lst))
(setq Lst (cdr Lst))
(cond ((not (member a L)) (setq L (cons a L))))
)
(acad_strlsort L)
)
自贡黄明儒 发表于 2016-9-30 11:39
信手拈来呀,研究下,多谢。
页:
[1]