2012-05-24 24 views

Trả lời

36

zip sử dụng nếu bạn cần cả hai

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

Điều này làm việc trong Python 3? – bourbaki4481472

+2

@ bourbaki4481472 có trong Python 3: danh sách (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] 

này đang sử dụng list comprehension (have a look at this link). Vì vậy, nó lặp lại thông qua các phần tử trong mylist, lần lượt thiết lập ij thành hai phần tử trong bộ dữ liệu. Đó là một cách hiệu quả tương đương với:

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

bạn có thể giải thích? – user1413824

+0

đó là [danh sách hiểu] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions) –

+0

@ user1413824 - Tôi đã cập nhật để giải thích nó tốt hơn một chút :) – fraxel

0

Bạn có thể thử này quá ..

dict(my_list).keys()