BiL_DelItem (DeL item)

Fonction Catégorie Version
BIL 09 BiL_DelItem Gestion des Listes 1.0 - Janvier 2007

Description

But Retourne une liste après y avoir enlevé un élément.
Prototype (BiL_DelItem Item1 Liste1)
Arguments Item1 - L’élément supprimer - tout type -
Liste1 - La liste à réduire - Liste -
Retours La liste réduite ou nil
Var. globales Néant
Description Retourne une liste après y avoir enlevé un élément de la liste. Si cet élément à supprimer existe en plusieurs exemplaires, ils seront tous retirés.
Notes Voir également les fonctions BiL_DelOne et BiL_DelPrim.
Cette routine fonctionne même si l'élément à effacer n'est pas unique, Chaque occurrence sera supprimée.
Si l'élément n'existe pas dans la liste, la fonction retourne la liste intacte.
Exemples

Command: (setq list1 '(1 2 3 4 5 6 7 8 3))
	(1 2 3 4 5 6 7 8 3)
(BiL_DelItem 3 list1)   retourne   (1 2 4 5 6 7 8)

Command:(setq list2 '("aa" "bb" "cc" "aa" "ee" "ee"))
	("aa" "bb" "cc" "aa" "ee" "ee")
Command: (BiL_DelItem "cc" list2)   retourne
	("aa" "bb" "aa" "ee" "ee")
	
Command: (BiL_DelItem "aa" list2)   retourne
	("bb" "cc" "ee" "ee")
	
Command: (BiL_DelItem "aa" list3)   retourne   nil

Command: (BiL_DelItem "xx" list2)   retourne
	("aa" "bb" "cc" "aa" "ee" "ee")

La fonction


    1- (Defun BiL_DelItem ( *Item1 *List1 / List2)

    2-    (if (and 
    3-          (Listp *List1)					
    4-	        (member *Item1 *List1)					
    5-        )
    6-        (progn
    7-          (foreach Element *List1			
    8-            (if (not (equal Element *Item1))		
    9-                (setq List2 (cons Element List2))	
   10-            )					
   11-          )                  ;   fin de la boucle foreach
   12-          (reverse List2)				
   13-        )                    ;	fin de progn
   14-        *List1               ;	else
   15-     )                       ;	fin de if	
   16- )

Ligne 3 :   Si *List1 est bien une liste
Ligne 4 :   et *Item1 un élément de cette liste, 
Ligne 7 :      Pour chaque élément de *List1
Ligne 8 :         si cet élément diffère de *Item1,
Ligne 9 :             ajoute l'élément au début de List2
Ligne 10 :            sinon rien
Ligne 12 :     inverse les éléments de List2 puisque la liste est construite à l’envers
Ligne 14 :     sinon (les conditions lignes 3 et 4 ne sont pas remplies) retourne la 
                    liste initiale *List1.


Listp : Retourne T si *List1 est une liste, nil dans les autres cas.
Member : Retourne nil si l'argument *Item1 ne fait pas partie de la liste *List1.
Foreach : Pour chaque élément de *List1, évalue l'expression qui suit en remplaçant Element par l'élément en question..
Cons : Construit une liste en y ajoutant le nouvel élément en début de liste.
Reverse : Pour remettre à l'endroit l'ordre des éléments de List2 inversé par cons.