List 检查项目是否在列表中(Lisp)
检查项目是否在列表中的简单方法是什么 差不多List 检查项目是否在列表中(Lisp),list,lisp,common-lisp,List,Lisp,Common Lisp,检查项目是否在列表中的简单方法是什么 差不多 (in item list) 如果item=1和list=(5 9 12)和false如果item=7您可以使用find: (find 1 '(5 9 1 2)) ; 1 (find 7 '(5 9 1 2)) ; nil 考虑使用:test参数: (find "a" '("a" "b") :test #'equal) 通用Lisp 查找不是一个好主意: > (find nil '(nil nil)) NIL 以上说明NIL不在列表中(
(in item list)
如果
item=1
和list=(5 9 12)
和false
如果item=7
您可以使用find
:
(find 1 '(5 9 1 2)) ; 1
(find 7 '(5 9 1 2)) ; nil
考虑使用:test
参数:
(find "a" '("a" "b") :test #'equal)
通用Lisp
查找
不是一个好主意:
> (find nil '(nil nil))
NIL
以上说明NIL
不在列表中(NIL-NIL)
-这是错误的
FIND
的目的不是检查成员资格,而是查找满足测试的元素(在上例中,测试函数是通常的默认值EQL
)FIND
返回这样的元素
使用成员
:
> (member nil '(nil nil))
(NIL NIL) ; everything non-NIL is true
或位置
:
> (numberp (position nil '()))
NIL
使用
MEMBER
测试项目是否在列表中:
(member 1 '(5 9 1 2)) ; (1 2)
与
FIND
不同,它还能够测试NIL
是否在列表中。(FIND NIL'(NIL NIL))->nilI实际上并不喜欢这个建议。成员从找到元素的位置返回列表。该问题要求类似谓词的内容,返回T
或NIL
。因此,我建议这个答案应该包装在一个if
中,所有定义为任何阅读此页面的人都在寻找的函数:(defun包含(项目序列)(if(成员项目序列)T NIL))