2012-05-24 8 views
25

Cuál es la forma más compacta de devolver lo siguiente:python - obtener lista de tuplas primer índice?

Dada una lista de tuplas, devuelva una lista que consta de los primeros elementos de las tuplas (o segundo, no importa).

Por:

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

lista devuelta sería

[1,2,3] 

Respuesta

36

uso postal si necesita tanto

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

Funciona esto en Python 3? – bourbaki4481472

+2

@ bourbaki4481472 sí en Python 3: list (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] 

Esto es usando un list comprehension (have a look at this link). Por lo tanto, itera a través de los elementos en mylist, estableciendo i y j en los dos elementos en la tupla, sucesivamente. En efecto, es equivalente a:

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

puede explicar? – user1413824

+0

es una [lista de comprensión] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions) –

+0

@ user1413824 - He actualizado para explicarlo un poco mejor :) – fraxel

0

Puede probar esto también ..

dict(my_list).keys() 
Cuestiones relacionadas