Jef*_*eff 32 lisp list common-lisp
检查项目是否在列表中的简单方法是什么?
就像是
(in item list)
Run Code Online (Sandbox Code Playgroud)
可能返回true如果item=1和list=(5 9 1 2)和false,如果item=7
Rai*_*wig 43
Common Lisp
FIND 不是一个好主意:
> (find nil '(nil nil))
NIL
Run Code Online (Sandbox Code Playgroud)
上面意味着NIL不在列表中(NIL NIL)- 这是错误的.
目的FIND不是检查成员资格,而是查找满足测试的元素(在上面的例子中,测试函数是通常的默认值EQL).FIND返回这样一个元素.
用途MEMBER:
> (member nil '(nil nil))
(NIL NIL) ; everything non-NIL is true
Run Code Online (Sandbox Code Playgroud)
或者POSITION:
> (numberp (position nil '()))
NIL
Run Code Online (Sandbox Code Playgroud)
Ter*_*aug 20
使用MEMBER测试一个项目是否是一个列表:
(member 1 '(5 9 1 2)) ; (1 2)
Run Code Online (Sandbox Code Playgroud)
FIND与之不同,它还能够测试是否NIL在列表中.
你可以使用find:
(find 1 '(5 9 1 2)) ; 1
(find 7 '(5 9 1 2)) ; nil
Run Code Online (Sandbox Code Playgroud)
考虑使用:test参数:
(find "a" '("a" "b") :test #'equal)
Run Code Online (Sandbox Code Playgroud)