找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1232|回复: 5

[求助] [求助]:请教:删除表中重复项?

[复制链接]
发表于 2008-9-18 22:14:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问高手们有没有什么函数或方法把一个表内的相同项都删除,只剩下其中之一?

比如:'((1 . "abc") (2 . "123") (1 . "abc") (3 . "dfe") (1 . "abc"))

要得到:'((1 . "abc") (2 . "123") (3 . "dfe")) (先后排列顺序不限)

请大家赐教,先谢了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-9-19 12:57:28 | 显示全部楼层
;;;                                                                       
;;;  函数名:hy_listdoublep                                               
;;;  功  能:                                                            
;;;         删除列表中相同的元素                                          
;;;           _$ (setq lst '("3" "2" "6" "5" "2" "2" "7" "2" "1"))        
;;;              ("3" "2" "6" "5" "2" "2" "7" "2" "1")                    
;;;           _$ (hy_listdoublep lst)                                    
;;;              ("3" "2" "6" "5" "7" "1")                                
;;;                                                                       

(defun hy_listdoublep (lip / ulist)
        (setq ulist nil)
        (foreach        item lip
                (if (and        (member item lip)
                                        (not (member item ulist))
                         )
                        (setq ulist (cons item ulist))
                )
        )
        (reverse ulist)
)

;;;                                                                       
;;;  函数名:LstDelSame                                                   
;;;  功  能:                                                            
;;;         删除列表中的相同元素(保留一个)并返回新表,hy_listdoublep      
;;;         函数的另一种写法                                             
;;;                                                                       
;;;  调用示例:                                                           
;;;  _$ (LstDelSame '(1 2 1 1 2 3 2))                                    
;;;  (1 2 3)                                                              
;;;                                                                       

(defun LstDelSame        (lst / x nl)
        (foreach        x lst
                (if (not (member x nl))
                        (setq nl (cons x nl))
                )
        )
        (reverse nl)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-21 12:10:55 | 显示全部楼层
谢谢长老!程序很好用,两个都能满足功能,多谢您热心解答!
学习,致谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-10-10 22:55:51 | 显示全部楼层
爱心分难挣啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-10-14 15:26:13 | 显示全部楼层
这个不错收下,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-6-4 08:28:17 来自手机 | 显示全部楼层
去除表中重复元素的好程序,纯lisp的,效率比用递归算法的高
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-11 05:40 , Processed in 0.379353 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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