• Ajouter deux listes de listes
Réponses:
12
Visites:
0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum.
Inscrivez-vous maintenant
• Ajouter deux listes de listes
Posté par
NooZ
le
08/06/2008 18:21
Bonjours à tous, j'ai une question sur l'ajout de "liste de liste".
Pour faire simple, j'ai plusieurs objets qui contiennent des listes de ce genre : code: ((objet1, objet2, objet3), (objet1', objet2'), (objet1", objet2", objet3"))A chaque instant, je parcours certains de ces objets pour réunir leurs liste et la retourner à une fonction d'affichage, je veut donc obtenir ceci : code: ((objet1, objet2, objet3, objetx, objety), (objet1', objet2', objetx'), (objet1", objet2", objet3", objetz, objeta))Pour le moment, je parcours tout les objets à prendre en compte, et copie leurs liste avec une boucle, code: for objet in objets:
Cette méthode prends 7x plus de temps que l'ajout de listes simple, y a t'il un moyen dans le langage/plus rapide pour faire la même chose ? Merci d'avance. (J'ai mis des parenthèses à la place des crochets car l'éditeur ne les affiches pas, et dois les prendre pour des balises, même dans un "code" ) |
• Re: Ajouter deux listes de listes
Posté par
NooZ
le
08/06/2008 18:34
>.< mes crochets on encore disparus et on ne peut éditer !
C'est bien sur un : code: list(i).extend(objet.list(i)) |
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
08/06/2008 21:44
Je propose
code: class C:
voici la trace d'exécution code: [[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4]]
|
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
08/06/2008 21:47
Je redonne le code car l'éditeur a bouffé l'avant dernière ligne
code: class C:
|
• Re: Ajouter deux listes de listes
Posté par
NooZ
le
09/06/2008 21:36
J'ai du mal m'expliquer, ou mal comprendre/tester le code
je ne veut pas simplement concaténer plusieurs liste, je veut concaténer des listes de listes en conservant l'ordre. objet1.liste = ( (a, b, c), (1, 2, 3), (", é, #) ) objet2.liste = ( (t, r, g), (4, 5, 6), (&, à, @) ) {Passage à la moulinette} liste_finale = ( (a, b, c, t, r, g), (1, 2, 3, 4, 5, 6), (", é, #, &, à, @) ) |
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
09/06/2008 22:37
Ok, je propose donc :
code: L1 =[['a', 'b', 'c'],[1, 2, 3],['e','d','#'] ]
|
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
09/06/2008 22:38
schnaps ! encore cet éditeur de m.., bon je redonne le code :
code: L1 =[['a', 'b', 'c'],[1, 2, 3],['e','d','#'] ]
|
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
09/06/2008 22:44
Ah ! voilà pour les one-liners :
code: L =[l1+l2 for l1,l2 in zip(L1,L2)]
|
• Re: Ajouter deux listes de listes
Posté par
NooZ
le
10/06/2008 21:04
Génial, ça correspond exactement à ce que je voudrais, je ne connaissais pas zip
Une petite dernière question, il y a moyen de rendre le code "dynamique". Durant l'exécution, le nombre de liste ( "L1", "L2" ) va varier. Je dois lui prévoir une bonne centaine de liste, qui serons vide ou non (un peu cracra comme méthode) ou il y a un moyen pour passer un nombre d'argument différent, dynamiquement ? Merci beaucoup |
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
10/06/2008 22:53
Bien sûre, toujours en une ligne
Supposes que toutes tes listes sont stockées dans une liste globale G au fur et à mesure que tu les créé. code: L1 =[['a', 'b', 'c'],[1, 2, 3],['e','d','#'] ]
Voici le résultat : code: [['a', 'b', 'c', 't', 'r', 'g', 'f', 'f', '1'],
|
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
10/06/2008 22:54
Ah j'ai pas testé pour les listes vides...
|
• Re: Ajouter deux listes de listes
Posté par
ychaouche
le
10/06/2008 22:55
Malheureusement dès qu'il y a une liste vide ça ne marche plus, qu'elle soit insérée au début à la fin ou au milieu.
|
• Re: Ajouter deux listes de listes
Posté par
NooZ
le
12/06/2008 11:58
Génial, j'initialise mes listes pour chaque objet donc ce code devrait passer sans modif
Merci beaucoup ! |






