明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1777|回复: 7

[提问] 疑问:vl-sort 对数值表排序,实数表不会删除重复值,整数表就可以删除。

[复制链接]
发表于 2016-9-30 10:41:01 | 显示全部楼层 |阅读模式
  • 疑问: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 | 显示全部楼层
就是这个样子的。如果不想被删除,则转成字符
 楼主| 发表于 2016-9-30 11:25:17 | 显示全部楼层
自贡黄明儒 发表于 2016-9-30 11:01
就是这个样子的。如果不想被删除,则转成字符

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

点评

http://bbs.mjtd.com/thread-108795-1-1.html 这个行不?  发表于 2016-9-30 11:29
发表于 2016-9-30 11:32:31 | 显示全部楼层
dragoon33333 发表于 2016-9-30 11:25
多谢黄工指点,我想让他删除重复的,因为原始是字符,我怕没法排序atof成实数的。我再写个lambda吧,就是 ...

先定义defun ,写完后把defun换成lambda ,去除defun后面那个名称,就是lambda函数了。
 楼主| 发表于 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 编辑

  1. ;;(setq Lst '("16.0" "16.0" "14.2" "14.2" "14.2" "14.2" "14.2"))
  2. ;;(w1 Lst)=>("16.0" "14.2")
  3. (defun w1 (Lst / A L)
  4.   (while (setq a (car Lst))
  5.     (setq Lst (cdr Lst))
  6.     (cond ((not (member a L)) (setq L (cons a L))))
  7.   )
  8.   (reverse L)
  9. )

;;(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:43:46 | 显示全部楼层

信手拈来呀,研究下,多谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 04:32 , Processed in 0.159628 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表