删除列表列表

时间:2013-03-20 10:57:23

标签: scheme racket

我知道如何在列表和变量中删除元素,但是有没有办法使用另一个列表从列表中删除元素?例子:(清单1 2 3 4 5)(清单1 2 3)产量(清单4 5)

2 个答案:

答案 0 :(得分:1)

在Racket中,这非常简单,只需使用remove*内置程序:

(remove* (list 1 2 3) (list 1 2 3 4 5))
=> '(4 5)

答案 1 :(得分:1)

与变量相同,但你需要使用成员函数而不是等于?:

#lang racket
; remove every element included in rlist from flist
(define (remove-list rlist flist)
  (if (empty? flist)
      '()
      (let ((c (car flist)))
        (if (member c rlist) ; <====
            (remove-list rlist (cdr flist))
            (cons c (remove-list rlist (cdr flist)))))))

(remove-list (list 1 2 3) (list 1 2 3 4 5))
=> '(4 5)
相关问题