Comment extraire la n-ième éléments à partir d'une liste de tuples?
Je suis en train d'essayer d'obtenir le n-ième éléments à partir d'une liste de tuples.
J'ai quelque chose comme:
elements = [(1,1,1),(2,3,7),(3,5,10)]
Je souhaite extraire seulement la deuxième éléments de chaque tuple dans une liste:
seconds = [1, 3, 5]
Je sais que cela pourrait être fait avec un for
boucle, mais je voulais savoir si il y a une autre façon, depuis que j'ai des milliers de tuples.
InformationsquelleAutor pleasedontbelong | 2010-07-22
Vous devez vous connecter pour publier un commentaire.
Il existe une autre manière. Vous pouvez aussi le faire avec carte et itemgetter:
Ce encore effectue une boucle interne si et il est légèrement plus lente que la compréhension de liste:
Résultats:
Si vous avez besoin d'itérer sur une liste, puis en utilisant un
for
est fine.Cela fonctionne aussi:
(Je suis surtout ce détachement, pour me prouver que j'ai groked
zip
...)Le voir en action:
Chose que j'ai appris aujourd'hui: l'Utilisation
*list
dans les arguments afin de créer une liste de paramètres pour une fonction...Note: En Python3,
zip
retourne un itérateur, donc au lieu d'utiliserlist(zip(*elements))
pour retourner une liste de tuples.**dict
à créer des mots-clés arguments:def test(foo=3, bar=3): return foo*bar
puisd = {'bar': 9, 'foo'=12}; print test(**d)
Trouvé ce que je cherchais quel chemin est le plus rapide pour tirer le deuxième élément d'un 2-tuple de la liste. Pas ce que je voulais, mais il s'est même test comme indiqué avec une 3ème méthode plus tester le zip méthode
Donc plus de deux fois plus vite si vous avez un 2 tuple paire de simplement convertir à une dict et de prendre les valeurs.
dict(elements).values()
entraînera un élément dict par opposition à la liste comprahension ou de la carte. C'est exactement ce que je voulais (j'ai été intéressé en unique touples) (+1 et grand merci pour l'affichage), mais d'autres pourraient se demander pourquoi dict est plus rapide c'est de ne pas allouer de la mémoire, mais seulement de vérifier contre l'élément existant.Les horaires pour Python 3.6 pour extraire le deuxième élément à partir d'un 2-tuple de la liste.
Également, ajouté
numpy
méthode de tableau, ce qui est plus simple à lire (mais sans doute plus simple que la compréhension de liste).et les horaires:
Noter que
map()
etzip()
ne pas renvoyer une liste, d'où la conversion explicite.À l'aide de
islice
etde la chaîne.from_iterable
:Cela peut être utile lorsque vous avez besoin de plus d'un élément: