drracket翻转删除功能

时间:2014-11-26 08:08:57

标签: scheme racket

我有2个列表

(define wholelist '(1 2 3 4 5 6 7 8 9 10))
(define list1 '(3 4 6 9 10))

(define (removelist list1 list2)
        (remove* list1 list2))

我想做的是,如果我

(define result1 (removelist list1 wholelist)
> '(1 2 5 7 8)

但我希望结果列表为

> '(3 4 6 9 10)

使用remove *函数。

有什么方法可以将我的'(1 2 5 7 8)结果翻到'(3 4 6 9 10)? 像

(not (remove* list1 list2))

????

非常感谢你的帮助!

另外,有没有办法在cond语句或函数???

中定义一个列表

非常感谢你!

1 个答案:

答案 0 :(得分:1)

在这种情况下,filterremove*更有用:我们希望获得wholelistlist1 (filter (lambda (e) (member e list1)) wholelist) => '(3 4 6 9 10) 的所有元素}。试试这个:

remove*

当然我们可以使用(remove* (filter-not (lambda (e) (member e list1)) wholelist) wholelist) => '(3 4 6 9 10) 做类似的事情,但这不太自然:

cond

关于你的另一个问题:

  

有没有办法在define语句或函数中定义列表?

当然,请使用member表达式或本地(define (my-function x) (let ((my-list '(1 2 3 4 5))) <do something with my-list>)) 。例如:

{{1}}