我正在使用DrRacket中的Lambda中级学生,我想知道如何删除列表中的重复项,同时保持顺序。例如(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)))]))
,但有一个问题,因为它不保持顺序。有人能指引我朝着正确的方向吗?谢谢你的时间。
实际上,它看起来好像*不会保留顺序,只是不保留重复元素的第一个。你确定你的解决方案不正确吗? –
不幸的是该解决方案不正确。例如,如果我有删除重复项(1 2 5 1 4),我想要(列表1 2 5 4),而不是(列表2 5 1 4)的实际值。对不起,这个不好的例子。 –
我正在考虑做一些类似于列表1的内容,然后使用第一个数字在列表的其余部分使用过滤器。除此之外,我不知道如何实现这个哈哈。 –