我有以下列表:
(X O X O X NIL X NIL O)
如果我(find 'x (X O X O X NIL X NIL O))
,则会返回X
,因此我知道该列表包含X
。但是如果我(find nil (X O X O X NIL X NIL O))
我得到NIL
,这是没有意义的,因为即使我的列表中没有NIL
,我也会得到NIL
。
如何判断我的列表是否包含NIL
?
答案 0 :(得分:3)
您可以使用position
(position NIL '(X O X O X NIL X NIL O))
--> 5
答案 1 :(得分:3)
它可能不像其他人那样处理器效率,但我可能会写得非常像我用英语说的那样:
(some #'null '(X O X O X NIL X NIL O))
答案 2 :(得分:0)
这样的事情会起作用吗?
(or
(map (lamdba (x)
(eq? x nil))
'(X O X O X NIL X NIL O)))
我现在没有安装CL,但我认为它会起作用。 (或在CL中以这种方式工作,对吗?还是有any
函数?
编辑:
等一下,nil算作假,对吧?
(apply and '(X O X NIL))
;Or
(all '(X O X NIL))
;Whichever works in CL.
答案 3 :(得分:-1)
NOT
正是您要找的。 p>
以下是一个例子:
(reduce #'(lambda (a b) (or a b))
(mapcar 'not '(1 2 3 4)))