Vérifier si l'élément est dans une liste (Lisp)
3 réponses
Common Lisp
FIND
n'est pas une bonne idée:
> (find nil '(nil nil))
NIL
ci-dessus signifierait que NIL
n'est pas dans la liste (NIL NIL)
- qui est faux.
Le but de FIND
n'est pas de vérifier l'appartenance, mais de trouver un élément qui satisfait un test (dans l'exemple ci-dessus, la fonction test est la valeur par défaut habituelle EQL
). FIND
retourne un tel élément.
Utiliser MEMBER
:
> (member nil '(nil nil))
(NIL NIL) ; everything non-NIL is true
ou POSITION
:
> (numberp (position nil '()))
NIL
40
répondu
Rainer Joswig
2015-04-29 21:11:19
Utiliser MEMBER
pour tester si un élément est dans une liste:
(member 1 '(5 9 1 2)) ; (1 2)
pas comme FIND
, il est également capable de tester si NIL
est dans la liste.
18
répondu
Terje Norderhaug
2011-05-26 20:57:22
Vous pouvez utiliser find
:
(find 1 '(5 9 1 2)) ; 1
(find 7 '(5 9 1 2)) ; nil
envisagez d'utiliser :test
argument:
(find "a" '("a" "b") :test #'equal)
7
répondu
khachik
2011-05-26 20:16:40