Sujet : Re: Panne de mémoire avec list et str
De : jpierre.messager (at) *nospam* gmail.com (Python)
Groupes : fr.comp.lang.pythonDate : 02. Dec 2024, 22:28:31
Autres entêtes
Organisation : Nemoweb
Message-ID : <WX0SGXiQgNVkhxkqD2oEOKAPBws@jntp>
References : 1 2 3
User-Agent : Nemo/1.0
Le 02/12/2024 à 16:32, Dominique a écrit :
Le 02/12/2024 à 12:16, Python a écrit :
l = [['2'], ['2'], ['6'], ['8'], ['9']]
''.join(x for x, in l)
'22689'
Je te remercie pour cette réponse qui allie simplicité et élégance. Je me pose toute fois une question : pour quoi la virgule après le X du for de
res=''.join(x for x, in result)
Et si je le supprime, j'ai cette erreur :
sequence item 0: expected str instance, list found
C'est dans la logique du déballage de tuple, les expressions
de la forme [a,...] = collection (for se contente de répéter cette
affectation sur les retour de next(...)).
C'est la virgule qui fait un tuple, les parenthèses ne sont qu'une
décoration :
(1,2,3)
(1, 2, 3)
1,2,3
(1, 2, 3)
Du coup en RHS il faut une virgule pour créer un tuple à un seul élément :
a = (1)
type(a)
<class 'int'>
a
1
a = 1,
type(a)
<class 'tuple'>
a
(1,)
En LHS c'est pareil :
a
[1]
a,b = [1, 2]
a
1
b
2
a, = [1]
a
1
Pour déballer une collection de deux éléments dans a et b on écrit a,b = ..., pour déballer l'unique élément d'une collection
on écrit a, = ...
Makes perfect sense :-)