setq - Compruebe si el elemento está en una lista(Lisp)
union de dos listas en lisp (3)
¿Qué es una forma sencilla de comprobar si un elemento está en una lista?
Algo como
(in item list)
puede devolver true si item=1 y list=(5 9 1 2) y false si item=7
Puedes usar find :
(find 1 ''(5 9 1 2)) ; 1
(find 7 ''(5 9 1 2)) ; nil
Considere usar :test argumento de :test :
(find "a" ''("a" "b") :test #''equal)
Lisp común
FIND no es una buena idea:
> (find nil ''(nil nil))
NIL
Lo anterior significa que NIL no está en la lista (NIL NIL) , lo cual es incorrecto.
El propósito de FIND no es verificar la membresía, sino encontrar un elemento que satisfaga una prueba (en el ejemplo anterior, la función de prueba es el EQL predeterminado habitual). FIND devuelve tal elemento.
Utilizar MEMBER :
> (member nil ''(nil nil))
(NIL NIL) ; everything non-NIL is true
o POSITION :
> (numberp (position nil ''()))
NIL
Use MEMBER para comprobar si un elemento está en una lista:
(member 1 ''(5 9 1 2)) ; (1 2)
A diferencia de FIND , también puede probar si NIL está en la lista.