我有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语句或函数???
中定义一个列表非常感谢你!
答案 0 :(得分:1)
在这种情况下,filter
比remove*
更有用:我们希望获得wholelist
中list1
(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}}