N° | Fonction | Catégorie | Version |
---|---|---|---|
BIL 22 | BiL_DelIfNot | Gestion des Listes | 1.0 - Janvier 2007 |
But | Retire les éléments d’une liste qui ne satisfont pas à une condition. |
Prototype | (BiL_DelIfNot Condition Liste) |
Argument | Condition - La fonction de condition - fonction - Liste - La liste à traiter - Liste - |
Retours | La liste modifiée ou non |
Var. globales | Néant |
Description | Retourne une liste en conservant les éléments qui satisfont à une condition |
Notes | La fonction de condition ne doit comporter qu’un seul argument. Contrairement à BiL_DelIf, ne pas mettre la fonction de condition sous quote. |
Exemples | Command: (BiL_DelIfNot zerop '(0 1 2 3 4 5 6 0 7 8)) retourne (0 0) (zerop vérifie si un élément est égal à 0) Command: (BiL_DelIfNot numberp '(0 1 2 (1 2) "az" (4 "a"))) retourne (0 1 2) (numberp vérifie si un élément est un nombre réel ou entier) Nota (1 2) n’est pas retourné parce que c’est une liste. Command: (BiL_DelIfNot listp '(0 1 2 (1 2) "az" (4 "a"))) retourne ((1 2) (4 "a")) (listp vérifie si un élément est une liste) Et si on crée une nouvelle fonction personnalisée telle que : Command: (defun stringp (*str)(= (type *str) 'STR)) On pourra ne conserver que les chaînes d’une liste : Command: (BiL_DelIfNot stringp '(1 2 ("a" "b") "c" 3 "d")) qui retourne ("c" "d") Nota ("a" "b") n’est pas retourné parce que c’est une liste. |
1- (defun BiL_DelIfNot (*fct *List1) 2- (apply 3- 'append (mapcar '(lambda(elm) 4- (if(*fct elm) 5- (list elm) 6- ) 7- ) 8- *List1) 9- ) 10- ) 11- )
Ligne 3 : Pour chaque élément de *List1, ajoute à la liste de retour, Ligne 4: - Si la fonction de condition est vraie Ligne 5: - l’élément en question Ligne 6: - sinon rien.