在Common中有许多序列(也包括列表)函数,它们搜索给定序列或列表中的某个项。例如,(position item sequence)在给定的序列中搜索匹配项的元素。其他一些获取项的序列搜索函数包括find、count、delete和remove。类似的列表搜索功能包括pushnew、member、adjoin、assoc和rassoc。
在每种情况下,一次只搜索一个项。但是,如果您想使用这些方便的内置函数搜索多个项,最简单的方法可能是将该函数放入每个项的循环中。缺点是顺序或列表将对每个项目进行新的扫描。
您可以编写自己的函数来扫描序列或列表中的所有项目,但这似乎或多或少地重复了设计内置函数的工作。我想知道为什么这些函数没有在更高的抽象级别上设计成接受多个项?一个项目的默认性能(和结果)不是相同的吗?
发布于 2019-05-20 16:09:15
您要寻找的是搜索函数的-if-not版本。例如,要在数据库中找到所有的青少年,你可以
(remove-if-not (lambda (age) (<= 13 age 19)) people :key #'person-age)https://stackoverflow.com/questions/56203432
复制相似问题