dragoon33333 发表于 2016-9-30 10:41:01

疑问: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:37

就是这个样子的。如果不想被删除,则转成字符

dragoon33333 发表于 2016-9-30 11:25:17

自贡黄明儒 发表于 2016-9-30 11:01
就是这个样子的。如果不想被删除,则转成字符

多谢黄工指点,我想让他删除重复的,因为原始是字符,我怕没法排序atof成实数的。我再写个lambda吧,就是不大会用无名函数。

自贡黄明儒 发表于 2016-9-30 11:32:31

dragoon33333 发表于 2016-9-30 11:25
多谢黄工指点,我想让他删除重复的,因为原始是字符,我怕没法排序atof成实数的。我再写个lambda吧,就是 ...

先定义defun ,写完后把defun换成lambda ,去除defun后面那个名称,就是lambda函数了。

dragoon33333 发表于 2016-9-30 11:38:11

自贡黄明儒 发表于 2016-9-30 11:32
先定义defun ,写完后把defun换成lambda ,去除defun后面那个名称,就是lambda函数了。

多谢,我再研究下。在看您的“点表排序、图元坐标点排序-----通吃-----再浓缩----最终版2014.2.22”。我再看下您的“带容差去除相同图元”。

自贡黄明儒 发表于 2016-9-30 11:39:53

本帖最后由 自贡黄明儒 于 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)
)

dragoon33333 发表于 2016-9-30 11:43:46

自贡黄明儒 发表于 2016-9-30 11:39


信手拈来呀,研究下,多谢。
页: [1]
查看完整版本: 疑问:vl-sort 对数值表排序,实数表不会删除重复值,整数表就可以删除。