什么是检查项目是否在列表中的简单方法?检查项目是否在列表中(Lisp)
喜欢的东西
(in item list)
可能会返回如果true
如果item=1
和list=(5 9 1 2)
和false
item=7
什么是检查项目是否在列表中的简单方法?检查项目是否在列表中(Lisp)
喜欢的东西
(in item list)
可能会返回如果true
如果item=1
和list=(5 9 1 2)
和false
item=7
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
您可以使用find
:
(find 1 '(5 9 1 2)) ; 1
(find 7 '(5 9 1 2)) ; nil
考虑使用:test
说法:
(find "a" '("a" "b") :test #'equal)
使用MEMBER
来测试一个项目是否是列表:
(member 1 '(5 9 1 2)) ; (1 2)
不像FIND
,它也能够测试NIL
是否在列表中。
最后回答。但对于初学者,你也可以使用以前字符串解决方案的组合。
(member "b" '("a" "b" "c") :test #'equal)
结果:
("b" "c")
(找零“(零零)) - >无 – 2011-05-26 20:57:53
Lisp语言的语法高亮显示在SO太恶心了...... – rvighne 2013-12-28 17:18:28