chuankay 发表于 2013-7-22 18:00:03

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

各位大师,我想删除list中的相同而且多余的元素(合并相同),如何实现呢?有没有快捷的函数什么的?
如:list(1 2 4 5 1 4 2 5 1 3 3 4 2 3 5 )=>list( 1 2 3 4 5)

vivienluo 发表于 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)
)

chuankay 发表于 2013-7-22 22:45:12

vivienluo 发表于 2013-7-22 21:14 static/image/common/back.gif
方法很多,但是好像没有独立的函数可以快捷操作,以下仅供参考:
方法一:
foreach(item items


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

vivienluo 发表于 2013-7-22 23:11:36

chuankay 发表于 2013-7-22 22:45 static/image/common/back.gif
非常感谢vivienluo能这么快能帮忙解决问题,问题已解决。
虽然我很希望你能给个独立函数(我找了好久也没 ...

如果想要减少计算量的话,想办法减少循环次数就行。应该都是差不多的。

f126054488 发表于 2013-7-23 15:12:28

Execl 可以篩選

chuankay 发表于 2013-8-7 15:33:52

f126054488 发表于 2013-7-23 15:12 static/image/common/back.gif
Execl 可以篩選

是的 不过我的目标是在代码执行时就筛选,目前我还不知道skill怎么和excel接口。

XYX365 发表于 2013-8-9 11:40:19

http://www.allegro-skill.com/thread-1060-1-1.html

chuankay 发表于 2013-8-9 18:29:31

XYX365 发表于 2013-8-9 11:40 static/image/common/back.gif
http://www.allegro-skill.com/thread-1060-1-1.html

这个函数对我很重要,万分感谢,,,:D:D:D:D:D:D:D:D
页: [1]
查看完整版本: 各位大师,想要删除list中重复的元素,如何实现