我正在尝试访问列表列表的位置,获取值并从另一个列表中删除。
例如,我有一个包含此数据的列表(l1):
(((a1) (a2) (a3)) ((a4) (a5) (a6)))
另一个列表(l2):
((a1) (a2) (a3) (a4) (a5) (a6))
现在,我想使用firstlist从第二个列表中删除a1,a2和a3,即。我想从第一个列表中访问a1 a2和a3并从第二个列表中删除它,但是,当我尝试这样做时,结果列表与第二个列表相同。
我的代码是:
(require srfi/1)
(define (delete-from-list l1 l2)
(let ((laux '()))
(for/list ([e (in-list l1)])
(for/list ([i (length e)])
(set! laux (delete (list-ref e i) l2))
)
)
(values laux)
)
)
示例列表的结果是:
((a1) (a2) (a3) (a4) (a5) (a6))
我做错了什么?
答案 0 :(得分:1)
您可能正在寻找类似的东西
#lang racket
(define l1 '(((a1) (a2) (a3)) ((a4) (a5) (a6))))
(define l2 '((a1) (a2) (a3) (a4) (a5) (a6)))
;; a new list without the elements in the first of l1:
(remove* (first l1) l2)
...评估为'((a4) (a5) (a6))
。
作为旁注,我暗中指引你远离变异。
另外,对我来说,所有项目都是嵌套列表,这有点奇怪。
最后,如果是一个班级,我会有一个完全不同的(一组)答案。