Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7235|回复: 7

各位大师,想要删除list中重复的元素,如何实现

[复制链接]
发表于 2013-7-22 18:00:03 | 显示全部楼层 |阅读模式
各位大师,我想删除list中的相同而且多余的元素(合并相同),如何实现呢?有没有快捷的函数什么的?
如:list(1 2 4 5 1 4 2 5 1 3 3 4 2 3 5 )=>list( 1 2 3 4 5)

发表于 2013-7-22 21:14:44 | 显示全部楼层
方法很多,但是好像没有独立的函数可以快捷操作,以下仅供参考:
方法一:
foreach(item items
list=cons(item remove(item items))
)
方法二:
resultItem = nil
foreach(item items
unless(member(item car(resultItem))
resultItem=tconc(resultItem item)
)
 楼主| 发表于 2013-7-22 22:45:12 | 显示全部楼层
vivienluo 发表于 2013-7-22 21:14
方法很多,但是好像没有独立的函数可以快捷操作,以下仅供参考:
方法一:
foreach(item items

非常感谢vivienluo能这么快能帮忙解决问题,问题已解决。
虽然我很希望你能给个独立函数(我找了好久也没找到),但是你提供的两种方法貌似是挑选出来的。我筛选的数据量有时挺大,重复的较多,我用方法一。
通过方法一,结合目前的情况(重复较多),我转换一下:
while(item = car(items)
        items = remove(item items)
        items = cdr(items)
        list = cons(item list)
)
麻烦看看是否妥当。
发表于 2013-7-22 23:11:36 | 显示全部楼层
chuankay 发表于 2013-7-22 22:45
非常感谢vivienluo能这么快能帮忙解决问题,问题已解决。
虽然我很希望你能给个独立函数(我找了好久也没 ...

如果想要减少计算量的话,想办法减少循环次数就行。应该都是差不多的。
发表于 2013-7-23 15:12:28 | 显示全部楼层
Execl 可以篩選
 楼主| 发表于 2013-8-7 15:33:52 | 显示全部楼层
f126054488 发表于 2013-7-23 15:12
Execl 可以篩選

是的 不过我的目标是在代码执行时就筛选,目前我还不知道skill怎么和excel接口。
发表于 2013-8-9 11:40:19 | 显示全部楼层
 楼主| 发表于 2013-8-9 18:29:31 | 显示全部楼层
XYX365 发表于 2013-8-9 11:40
http://www.allegro-skill.com/thread-1060-1-1.html

这个函数对我很重要,万分感谢,,,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-11-23 20:37 , Processed in 0.126513 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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