azop Posté(e) le 20 février 2012 Posté(e) le 20 février 2012 Bonjour, j'aimerai savoir s'il existerai une fonction qui suprimerai un atom dans une liste :(1 2 3 4 5) -> suprimer le 3eme atome : (1 2 4 5)
VDH-Bruno Posté(e) le 20 février 2012 Posté(e) le 20 février 2012 (modifié) Bonjour, Supprimer l’atome en 3éme position ou supprimer l’atome qui vaut 3 ??? Si tu veux supprimer toutes les occurrences de l’atome spécifié de ta liste utilise vl-remove_$ (vl-remove 3 '(1 2 3 4 5 3)) (1 2 4 5) Sinon dans la bibliothèque de fonctions de manipulation de liste de (gile), il peut y avoir des fonctions qui peuvent t’intéresser, comme par exemple: Pour ne supprimer que la première occurrence de l’atome spécifié;; REMOVE-ELE ;; Retourne la liste sans la première occurence de l'expression (defun remove-ele (ele lst) (if (equal ele (car lst)) (cdr lst) (cons (car lst) (remove-ele ele (cdr lst))) ) ) _$ (remove-ele 3 '(1 2 3 4 5 3)) (1 2 4 5 3) Et pour supprimer le troisième atome de la liste (en fonction de sa position), tu as REMOVE-I;; REMOVE-I ;; Retourne la liste privée de l'élément à l'indice spécifié ;; (premier élément = 0) (defun remove-i (ind lst) (if (or (zerop ind) (null lst)) (cdr lst) (cons (car lst) (remove-i (1- ind) (cdr lst))) ) ) _$ (remove-i 2 '(1 2 3 4 5 3)) (1 2 4 5 3) ----------- Edit: Ajout d'une dernière proposition -------------J’en rajouterai une petite dernière que j’avais donné récemment qui permet de supprimer toutes les occurrences d’un atome à toutes les profondeurs d’une liste;;; Supprime toutes les occurrences d'un élément à toutes les profondeurs d'une liste ;;; (remove-prof 'a '(b a d (b (e a g) a) a e)) -> (B D (B (E G)) E) (defun remove-prof (x l) (cond ((null l) nil) ((equal x (car l)) (remove-prof x (cdr l))) ((listp (car l)) (cons (remove-prof x (car l)) (remove-prof x (cdr l)))) (T (cons (car l) (remove-prof x (cdr l)))) ) ) A+ Modifié le 20 février 2012 par VDH-Bruno Apprendre => Prendre => Rendre
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant