prospoule Posté(e) le 31 août 2011 Posté(e) le 31 août 2011 Bonjour, Ca fait une semaine que je galère avec un problème de liste et là j'en ai plus que marre alors je demande un peux d'aide. Je ne sais d'ailleurs pas si ce que je veux faire est possible du moins sans déployer un code style usine à gaz. Voici le problème si toutefois quelqu'un aurai une idée de génie : Je crée deux listes (setq liste1 ("a" "b" "c")) (setq liste2 ("1" "2" "3")) Et j'aimerai les combiner de manière à avoir une troisième liste qui ressemble à ça : (setq liste3 (("a1" "a2" "a3") ("b1" "b2" "b3") ("c1" "c2" "c3"))) ou ça : (setq liste3 ("a1" "a2" "a3" "b1" "b2" "b3" "c1" "c2" "c3")) Je poste tout de même le dernier bout de code que j'ai pondu même si il est complètement faux. (foreach liste1 (list "a" "b" "c") (foreach liste2 (list "1" "2" "3") (setq c (append(liste1 liste2))) ) ) Merci de m'avoir lu et bonne soirée Prospoule
bonuscad Posté(e) le 31 août 2011 Posté(e) le 31 août 2011 Bonjour, Ton idée de départ avec foreach est bonne.Voici comment tu pourrais la tourner. (setq liste1 '("a" "b" "c" "s" "u" "y")) (setq liste2 '("1" "2" "3" "4" "0")) (setq liste3 ((lambda (l1 l2 / l0) (setq l0 nil) (foreach n l1 (list (foreach nj l2 (setq l0 (cons (strcat n nj) l0))))) (reverse l0) ) liste1 liste2) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 1 septembre 2011 Posté(e) le 1 septembre 2011 Salut, Je ne sais pas si tu considère l'utilisation de la fonction mapcar avec des expressions lambda comme du "code style usine à gaz".Si c'est le cas, je te conseille vivement de passer outre ces à priori et d'essayer de comprendre ces fonctions fondamentales en LISP (une petite explication ici).Quand on maitrise l’utilisation de mapcar, ce sont les codes qui n'utilisent pas cette fonction là où ils le pourraient qui ressemblent à des "usines à gaz"... (setq liste1 '("a" "b" "c" "d") liste2 '("1" "2" "3")) (mapcar '(lambda (lettre) (mapcar '(lambda (nombre) (strcat lettre nombre)) liste2 ) ) liste1 ) Liste retournée :(("a1" "a2" "a3") ("b1" "b2" "b3") ("c1" "c2" "c3") ("d1" "d2" "d3")) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
prospoule Posté(e) le 1 septembre 2011 Auteur Posté(e) le 1 septembre 2011 Bonjour et tout d'abord merci d'avoir répondu si rapidement. Les deux méthodes fonctionnent parfaitement et je vais les étudier toutes les deux. Je débute tout juste avec les boucles et je ne connais pas encore la fonction mapcar. Je ne trouve pas qu'utiliser la fonction mapcar soit une méthode usine à gaz mais j'avais peur que la solution que l'on me proposerais serait monstrueusement compliquée. Je vous remercie encore.
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