2011-05-26 102 views

回答

38

Common Lisp的

FIND是不是一个好主意:

> (find nil '(nil nil)) 
NIL 

以上将意味着NIL不在列表(NIL NIL) - 这是错误的。

FIND的目的不是检查成员资格,而是找到满足测试的元素(在上例中测试函数是通常的默认EQL)。 FIND返回这样一个元素。

使用MEMBER

> (member nil '(nil nil)) 
(NIL NIL) ; everything non-NIL is true 

POSITION

> (numberp (position nil '())) 
NIL 
7

您可以使用find

(find 1 '(5 9 1 2)) ; 1 
(find 7 '(5 9 1 2)) ; nil 

考虑使用:test说法:

(find "a" '("a" "b") :test #'equal) 
+6

(找零“(零零)) - >无 – 2011-05-26 20:57:53

+3

Lisp语言的语法高亮显示在SO太恶心了...... – rvighne 2013-12-28 17:18:28

17

使用MEMBER来测试一个项目是否是列表:

(member 1 '(5 9 1 2)) ; (1 2) 

不像FIND,它也能够测试NIL是否在列表中。

0

最后回答。但对于初学者,你也可以使用以前字符串解决方案的组合。

(member "b" '("a" "b" "c") :test #'equal) 

结果:

("b" "c") 
相关问题