2010-11-05 46 views
0

列表我有一個整數列表的列表:指數直通列表中的AutoLISP

(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)) 

我想循環列表的初步名單,名單me減去名單a的每個成員(第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)) 

return(31)