2012-05-24 12 views

risposta

36

uso zip se avete bisogno di entrambi

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

Funziona in Python 3? – bourbaki4481472

+2

@ bourbaki4481472 sì in Python 3: elenco (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] 

Questo sta usando una list comprehension (have a look at this link). Quindi itera attraverso gli elementi in mylist, impostando i e j nei due elementi della tupla, a turno. E 'efficace equivale a:

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

si può spiegare? – user1413824

+0

è una [list comprehension] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions) –

+0

@ user1413824 - Ho aggiornato per spiegarlo un po 'meglio :) – fraxel

0

Si può provare questo troppo ..

dict(my_list).keys()