Aller au contenu

liste supprimer element double


Messages recommandés

Posté(e)

Bonjour à tous!

soit la liste de point suivant:

((163.873 98.5) (10.5 20.5)(10.5 20.5) (454.535 185.5) (481.596 102.5))

 

quel fonction me permettrait de tester la liste et d'oter le point en double "(10.5 20.5)" et en général de supprimer tout element en double dans une liste?

 

Voici le point d'insertion d'une entité en x y z:

(10 20.50 20.50 1.0)

Est-ce que je peux utiliser des caracteres generiques pour ne modifier que l'altitude z

d'un element d'une liste dxf d'entité?

Ce qui donnerait:

(setq entlist(entget (car (entsel "Objet:"))))

(setq Entlist (append Entlist (list (cons 10 * * 0.0))))

(entmod Entlist)

 

Mais le symbole " * " ne fonctionne pas bien sur!

 

Bon Week!

Posté(e)

(setq entlist(entget (car (entsel "Objet:"))))

(setq point (append

(if(=(length(cdr(assoc 10 entlist)))2)(cdr(assoc 10 entlist))(list(car(cdr(assoc 10 entlist)))(cadr(cdr(assoc 10 entlist)))))

(list 0)))

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Bonjour à Toi,

 

pour ta deuxième question je te propose une alternative :

 

 

(setq ent (car(entsel"\nChoix de l'Objet\n"))

......... ent2 (entget ent)

......... pins (cdr(assoc 10 (entget ent)))

......... z-actuel (caddr pins)

......... z-nouveau (cons 10(list (car pins)(cadr pins)0))

......... ent (subst z-nouveau (assoc 10 ent2) ent2)

......... )

(entmod ent)

 

je t'en souhaite une bonne utilisation.

 

amicalement

 

 

Posté(e)

Salut MAC,

 

pour ta première question je te propose ce code façon "récursive" :

;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste

(defun REMOVE_DOUBLES (lst)
 (cond
   ((null lst) nil)
   (T
    (cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst)))
   )
 )
)

 

A plus

Posté(e)

Merci!

Donc, si j'ai bien compris pas de caracteres generiques en lisp?

dommage!

mais ceci fera très bien l'affaire et d'ailleurs j'aurai pu faire un petit effort de reflexion sur le sujet !.

Grace à vous,je me coucherai plus tot ce soir.

 

Fonction "recursive"? c'est nouveau ça!

je teste et essaie de comprendre.(fonction dans la fonction?)

 

A+

Cordialement.

Posté(e)

Salut Mac,

 

On parle de "récusivité" pour une fonction qui s'appelle elle même dans sa définition j'ai découvert çà ici où il y a d'autres liens vers des forums en anglais.

Je trouve çà puissant et très élégant.

On aurait pu écrire, de manière "itérative" :

(defun remove-doubles (lst / lst2)
 (while (car lst)
   (setq lst2   (cons (car lst) lst2)
  lst (vl-remove (car lst) lst)
   )
 )
 (reverse lst2)
) 

 

A plus...

Posté(e)

WCMATCH si tu cherches vraiment à comparer des chaines et des génériques

 

Mais ca vaut pas le coup pour les valeurs numériques ;)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

OUI! puissantes ces fonctions "recursives", et à developper.

J'avais pas vu la fonction "WCMATCH" mais en effet elle fonctionne que sur les listes caracteres,

et à priori la seule qui prenne les caracteres generiques.

 

Merci à tous.

A+

 

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité