Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个清单
(SetQ L '(1 j 3 k 4 h 5 n 6 w))
我必须做一个函数 Order,它在入口处有一个带有“n”个原子的列表,它必须检查该列表的每个原子是否包含在列表 L 中,并根据列表 L 中指定的顺序对它们进行排序,如果原子不是列表 L 的一部分,然后将显示结果
(Defun Order lst) (SetQ L2'(w o 5 j 3))
我想验证这一点:
(Order L2)
结果应该返回:
(J 3 5 W)
提示:
之前,你问过这个问题:
CLISP :检查两个元素是否在列表中依次排列
这个函数与问题有关,因为它可以在调用标准 Lisp 函数时用作比较函数sort。
sort
Lisp 函数intersection可以生成一个列表,该列表仅包含一个列表中出现在另一个列表中的那些元素。这是一个集合操作,所以它可能会挤压重复;另一种方法是使用remove-if-not测试谓词是一个 lambda 函数,用于member表达“删除该列表中不属于该列表的所有元素”的想法。
intersection
remove-if-not
member