perdu dans les listes

Le
Philippe Makowski
décidément j'ai un peu de mal

j'ai une liste comme cela :
[('item1','valeur1'),('autreitem','autrevaleur')]
et je voudrais récuperer une liste :
['item1', 'autreitem']

vous pourriez me donner une indication ?
merci

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #590728
décidément j'ai un peu de mal

j'ai une liste comme cela :
[('item1','valeur1'),('autreitem','autrevaleur')]
et je voudrais récuperer une liste :
['item1', 'autreitem']

vous pourriez me donner une indication ?


autreliste = [item[0] for item in uneliste]

merci


De rien.

Méta-MCI
Le #590726
Bonsoir !


Si l'ordre n'a pas d'importance, on peut aussi faire :
autreliste = dict(uneliste).keys()


@+

Michel Claveau
Bruno Desthuilliers
Le #590482
Bonsoir !

Si l'ordre n'a pas d'importance,


Et si les valeurs des premiers éléments des tuples sont uniques...

on peut aussi faire :
autreliste = dict(uneliste).keys()



J'avais envisagé de le signaler aussi, mais en l'occurrence je doute que
ça apporte grand chose.

Evidemment, si l'OP a effectivement besoin de ce dict ailleurs dans son
code - et si les deux solutions ci-dessus sont réunies - c'est autre
chose...

Maric Michaud
Le #591800
C'est un peu réchauffé mais bon... je me baladait sur le groupe.

Bruno Desthuilliers wrote:

autreliste = [item[0] for item in uneliste]



J'ai tendance à préfèrer la notation suivante, je trouve qu'on lit mieux la
structure de uneliste, pour peu qu'on ai suffisamment l'habitude des listes
en compréhension et du "tuple unpacking" (jamais su traduire ça en
français, des suggestions ?) :

autreliste = [ first for first, second in uneliste]


--
_____________

Maric Michaud
_____________

Aristote - www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 426 880 097

Bruno Desthuilliers
Le #597019
C'est un peu réchauffé mais bon... je me baladait sur le groupe.

Bruno Desthuilliers wrote:


autreliste = [item[0] for item in uneliste]




J'ai tendance à préfèrer la notation suivante, je trouve qu'on lit mieux la
structure de uneliste, pour peu qu'on ai suffisamment l'habitude des listes
en compréhension et du "tuple unpacking" (jamais su traduire ça en
français, des suggestions ?) :


"dépaquetage de tuple" ? Hmmm... Non, j'abandonne.

autreliste = [ first for first, second in uneliste]



Dans ce cas (je veux dire, puisque second n'est pas utilisé), l'idiome
serait plutôt:

[first for first, _ in aList]

Au niveau perfs, le second semble un peu plus rapide (python 2.4.3 sous
gentoo-linux sur un athlon xp1200 vieillissant):

Python 2.4.3 (#1, Mar 12 2007, 23:32:01)
[GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on
linux2
Type "help", "copyright", "credits" or "license" for more information.
from timeit import Timer
t1 = Timer('[item[0] for item in aList]', 'aList = [(i, "a") for i
in range(1000)]')



t2 = Timer('[f for f, s in aList]', 'aList = [(i, "a") for i in
range(1000)]')



t1.repeat(3, 500)
[0.24946808815002441, 0.22183489799499512, 0.22195887565612793]



t2.repeat(3, 500)
[0.20945215225219727, 0.17732000350952148, 0.18340516090393066]



t1.repeat(3, 500)
[0.24668788909912109, 0.22424697875976562, 0.22272896766662598]



t2.repeat(3, 500)
[0.20660781860351562, 0.17955183982849121, 0.18208885192871094]










Publicité
Poster une réponse
Anonyme