0

我有一个整数列表列表:

(setq a '(21 14 35 29 16 28))
(setq b '(15 36 21 17 45 41))
(setq c '(24 21 35 28 17 21))

总共可能有 50 个 +/- 列表。

我还有另一个清单:

(setq me '(17 14 31 21 17 28))

我想循环浏览列表的初始列表,并从 list 中减去 list 的每个成员a(第一次通过)me

我如何能够通过列表的初始列表进行索引,以便我可以执行比较?

4

1 回答 1

1

如果我假装明白你在问什么...

(setq 
    a  '(21 14 35 29 16 28)
    b  '(15 36 21 17 45 41)
    c  '(24 21 35 28 17 21)
    me '(17 14 31 21 17 28)
    lst (append a b c)
)

(setq result 
    (vl-remove-if
       '(lambda (x) (member x lst))
        me
    )
)    

结果的值为 (31)

如果那 ^ 是您正在寻找的,那么一个更通用的解决方案:

(defun foo ( lst listOfLists )
    (   (lambda ( grandList )
            (vl-remove-if
               '(lambda (x) (member x grandList))
                lst
            )
        )
        (apply 'append listOfLists)
    )        
)

(foo me (list a b c)) 

返回 (31)

于 2010-12-07T04:00:53.930 回答