Bonjour à tous, comme beaucoup ici, je débute sur Python.
Toutefois, j'ai l'habitude de programmer en C.
J'aimerais comprendre davantage les compréhensions de liste
Voilà, j'ai des listes et des tuples imbriqués :
[(["Salut.", "Mon nom est Irken.","Je suis né un 20 septembre."], "Irken", "22/01/1789", 2), (["Mes rhododendrons sont jeunes.", "Pas comme toi, Irken."], "Robert", "16/03/1932", 4)]
J'aimerais concaténer les listes pour obtenir :
[(["Salut. Mon nom est Irken. Je suis né un 20 septembre."], "Irken", "22/01/1789", 2), (["Mes rhododendrons sont jeunes. Pas comme toi, Irken."], "Robert", "16/03/1932", 4)].
J'ai créé le code suivant, que je n'ai pas eu beaucoup de mal à faire, puisque ça ressemble au C
final=list()
for (phr,a,d,s) in tokens:
recompose=list()
for bout in phr:
recompose+=bout
phr=recompose
final.append((phr,a,d,s))
Mais par contre, en utilisant les compréhensions de liste, je n'y arrive vraiment pas. Qui peut m'aider?
Ah, oui, et le programme s'exécutera-t-il plus rapidement?
Merci
a = [[["Salut.", "Mon nom est Irken.","Je suis né un 20 septembre."], "Irken", "22/01/1789", 2], [["Mes rhododendrons sont jeunes.", "Pas comme toi, Irken."], "Robert", "16/03/1932", 4]]
for i in a:
a[a.index(i)][0] = ' '.join(i[0])
print a
[['Salut. Mon nom est Irken. Je suis né un 20 septembre.', 'Irken', '22/01/1789', 2], ['Mes rhododendrons sont jeunes. Pas comme toi, Irken.', 'Robert', '16/03/1932', 4]]
J'ai changé le tuple pour une liste vu qu'il faut modifier son contenu.
D'ailleurs, si quelqu'un a une idée pour améliorer a[a.index(i)], je suis preneur.
D'ailleurs, si quelqu'un a une idée pour améliorer a[a.index(i)], je suis preneur.
Tout simplement:
a = [[["Salut.", "Mon nom est Irken.","Je suis né un 20 septembre."], "Irken", "22/01/1789", 2], [["Mes rhododendrons sont jeunes.", "Pas comme toi, Irken."], "Robert", "16/03/1932", 4]]
for i in a:
i[0] = ' '.join(i[0])
print a
Ensuite j'ai le pressentiment que la liste en question est une réponse sql (je me trompe peut-être), du coup Irken n'a pas le choix du tuple.
C'est là que les liste compréhensions peuvent être utile:
Pour transformer les tuples en list:
a = [(["Salut.", "Mon nom est Irken.","Je suis né un 20 septembre."], "Irken", "22/01/1789", 2), (["Mes rhododendrons sont jeunes.", "Pas comme toi, Irken."], "Robert", "16/03/1932", 4)]
aList = [list(b) for b in a]
for i in aList:
i[0] = ' '.join(i[0])
print aList
Ou directement:
b = [(" ".join(phrase), nom, date, id) for phrase, nom, date, id in a]
print b
ou encore (si la taille de la liste n'est pas connu):
b = [[" ".join(c[0])] + list(c[1:]) for c in a]
print b
Merci pour tous ces conseils;
par contre je ne comprends pas bien cette ligne :
b = [[" ".join(c[0])] + list(c[1:]) for c in a]
ça revient à faire:
b = []
for c in a:
b.append([" ".join(c[0])] + list(c[1:]))
Python c'est bon, mangez-en.
(in)compréhensions de liste
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.