乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 43|回复: 2

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

[复制链接]

8

主题

21

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
53
发表于 2004-6-9 17:23:00 | 显示全部楼层 |阅读模式
(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")
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 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. )
回复

使用道具 举报

8

主题

21

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
53
发表于 2004-6-9 18:03:00 | 显示全部楼层
谢谢班主,多出这个点被我找到原因了,只是一高兴在编辑帖子时忘记将将帖子的内容改过来了。多出的小数点是因为我的初始C1-ITEM是一个原子而不是一个表。对不大家。班主的方法当然要比我的好多了。我会努力的。
我将贴子已修改过来了。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-18 11:20 , Processed in 1.768168 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表