Vous venez essentiellement besoin de cartographier le fonctionnement d'obtenir l'élément à l'index 1 de chaque tuple dans une liste et produire une nouvelle liste.
Étant donné:
>>> LoT
[(0, 'apple'), (1, 'pineapple'), (11, 'cherry'), (12, 'banana'), (13, 'mango'), (14, 'boot'), (15, 'mangosteen')]
Vous pouvez utiliser une compréhension de la liste et accéder à l'élément d'intérêt de chaque tuple:
>>> [t[1] for t in LoT]
['apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen']
Vous pouvez utiliser décompactage tuple:
>>> [b for _,b in LoT]
['apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen']
qui échoue si le tuple n'a que 2 éléments de long.
Vous pouvez également utiliser zip
:
>>> list(zip(*LoT))[1]
('apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen')
Vous pouvez utiliser un itemgetter avec map:
>>> list(map(itemgetter(1),LoT))
['apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen']
Avec python3 vous devez utiliser list
autour zip
pour indicer le premier élément ou autour map
pour le montrer. Combiné avec des boucles ou un autre contrôle de flux dans Python 3, vous n'auriez probablement pas besoin de ça.
Le premier, [t[1] for t in LoT]
, est le plus idiomatique et le dernier, map(itemgetter(1),LoT)
peut-être le plus rapide.
Comment s'appelle cette structure de données? Quand je branche "t [1] pour t dans LoT" ma console dit que c'est un type de générateur. – Justin
Mettez dans la console * exactement * ce que j'ai fait et qui devrait fonctionner. Ensuite, travaillez en arrière à partir de là pour vous servir de cas. Vous devez utiliser '[...]' pour obtenir une compréhension de la liste. – dawg
Je l'ai fait et ça marche, je me demandais comment faire référence dans le futur. Radish dit que ça s'appelle "tuple unpacking"? – Justin