明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1967|回复: 2

(VL-SORT list comparision-function)这个函数不能取掉相同元素的解决方法。请看看

[复制链接]
发表于 2004-6-9 17:23:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-6-9 18:05:53 编辑

(VL-SORT list comparision-function)这个函数不能取掉相同元素的解决方法。请看看这样行不?[br]上次我问了下面这个问题: 请教关于(VL-SORT list comparision-function)函数的用法?
谢谢大家给我的方法。但是还是不能很好的解决排序的问题,比如LIST 里的元素不是单一的字母,而是多个字母,大家提供的方法就不好用了。下面是我写了一段程序来解决这个问题,请看看行不行? (defun C:sas (/ c1-item-temp data-list temp-list c1-list c1-item)
(setq c1-item-temp
(list "F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "F" "F" "F" "F" "F" "F"
"F" "F" "F" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "S" "S" "S" "S" "S"
"S" "S" "S" "S" "T" "T"
)
)
(setq c1-item (vl-sort c1-item-temp '<))
;;;先安顺序排好
(setq c1-item (list (car c1-item-temp)))
(print c1-item)
(setq c1-list c1-item-temp)
;;;排好序的c1-item-temp里去除相同的元素写到c1-item里
(foreach data-list c1-item-temp
(setq temp-list (vl-remove data-list c1-list))
(if (/= (length temp-list) (length c1-list))
(progn
(setq c1-list temp-list)
(setq c1-item (cons (car c1-list) c1-item)) )
)
)
(print "c1-item")
(print c1-item)
) 结果是 "c1-item"
(nil "T" "S" "F")
发表于 2004-6-9 17:46:00 | 显示全部楼层
那个点怎么来的,你看看这个的结果:(cons "a" (cons "a" "b")),再看看函数cons的用法。。。我的程序如下:
  1. (defun C:sas (/ c1-item-temp c1-item)
  2.    (setq c1-item-temp
  3.    (list "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  4.                "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  5.                "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  6.                "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  7.                "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  8.                "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  9.                "F"     "F"     "F"   "F"     "F"     "F"     "F"   "F"     "F"
  10.                "F"     "F"     "F"   "S"     "S"     "S"     "S"   "S"     "S"
  11.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  12.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  13.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  14.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  15.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  16.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  17.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  18.                "S"     "S"     "S"   "S"     "S"     "S"     "S"   "S"     "S"
  19.                "S"     "S"     "S"   "S"     "T"     "T"
  20.              )
  21.    )
  22.    (setq c1-item-temp (vl-sort c1-item-temp '<) c1-item nil)
  23.    (foreach item c1-item-temp
  24.        (if (not (member item c1-item))
  25.            (setq c1-item (append c1-item (list item)))
  26.        )
  27.    )   
  28.    (print "c1-item")
  29.    (print c1-item)
  30. )
 楼主| 发表于 2004-6-9 18:03:00 | 显示全部楼层
谢谢班主,多出这个点被我找到原因了,只是一高兴在编辑帖子时忘记将将帖子的内容改过来了。多出的小数点是因为我的初始C1-ITEM是一个原子而不是一个表。对不大家。班主的方法当然要比我的好多了。我会努力的。


我将贴子已修改过来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 10:51 , Processed in 0.185711 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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