Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perdu dans les listes

5 réponses
Avatar
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

5 réponses

Avatar
Bruno Desthuilliers
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.

Avatar
Méta-MCI
Bonsoir !


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


@+

Michel Claveau
Avatar
Bruno Desthuilliers
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...

Avatar
Maric Michaud
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

Avatar
Bruno Desthuilliers
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]