我正在使用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的內容,然後使用第一個數字在列表的其餘部分使用過濾器。除此之外,我不知道如何實現這個哈哈。 –