我在用Lambda 中级学生在 DrRacket 中,我想知道如何删除列表中的重复项,同时保持顺序。例如(remove-dup (list 2 5 4 5 1 2))
会产生(list 2 5 4 1)
。到目前为止,我有这个:
(define (remove-duplicates lst)
(cond
[(empty? lst) empty]
[(member? (first lst) (rest lst))
(remove-duplicates (rest lst))]
[else (cons (first lst) (remove-duplicates (rest lst)))]))
,但是有一个问题,因为它不保留顺序。有人能指出我正确的方向吗?谢谢你的时间。
如果您的目标是让功能正常工作,而不是一些家庭作业问题,那么您不需要做任何事情,只需使用remove-duplicates http://docs.racket-lang.org/reference/pairs.html#%28def._%28%28lib._racket/list..rkt%29._remove-duplicates%29%29:
Welcome to Racket v5.2.
-> (remove-duplicates (list 2 5 4 5 1 2))
'(2 5 4 1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)