2012-05-24 16 views
25

Was ist der kompakteste Weg, um Folgendes zurückzugeben:Python - Liste der ersten Tupel Index erhalten?

Gegeben eine Liste von Tupeln, eine Liste, bestehend aus den Tupel ersten (oder zweiten, spielt keine Rolle) Elemente.

Für:

[(1,'one'),(2,'two'),(3,'three')] 

zurückgegebene Liste wäre

[1,2,3] 

Antwort

36

Verwendung zip, wenn Sie beide brauchen

>>> r=(1,'one'),(2,'two'),(3,'three') 
>>> zip(*r) 
[(1, 2, 3), ('one', 'two', 'three')] 
+0

Funktioniert das in Python 3? – bourbaki4481472

+2

@ bourbaki4481472 ja in Python 3: Liste (zip (* r)) –

30
>>> tl = [(1,'one'),(2,'two'),(3,'three')] 
>>> [item[0] for item in tl] 
[1, 2, 3] 
10
>>> mylist = [(1,'one'),(2,'two'),(3,'three')] 
>>> [j for i,j in mylist] 
['one', 'two', 'three'] 
>>> [i for i,j in mylist] 
[1, 2, 3] 

Dies ist ein list comprehension (have a look at this link) verwenden. Es iteriert also die Elemente mylist, i und j nacheinander auf die beiden Elemente im Tupel. Es ist effektiv äquivalent zu:

>>> newlist = [] 
>>> for i, j in mylist: 
...  newlist.append(i) 
... 
>>> newlist 
[1, 2, 3] 
+0

können Sie das erklären? – user1413824

+0

es ist ein [Liste Verständnis] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions) –

+0

@ user1413824 - Ich habe aktualisiert, um es ein bisschen besser zu erklären :) – fraxel

0

Sie können dies versuchen ..

dict(my_list).keys() 
Verwandte Themen