2012-12-22 77 views
5

是否有一種有效的方式來遍歷列表列表,並將每個列表的第一個元素提取到另一個列表中,第二個元素提取到另一個列表中,例如:Python - 通過索引從列表中提取多個列表

x = [[1, 2, 3], [4, 5, 6] , [7, 8, 9]] 
y1 = [i[0] for i in x] 
y2 = [i[1] for i in x] 

有沒有辦法在單個列表解析中提取y1和y2?

回答

7

你可以使用zip

>>> x = [[1, 2, 3], [4, 5, 6] , [7, 8, 9]] 
>>> for l in zip(*x): 
...  print l 
... 
(1, 4, 7) 
(2, 5, 8) 
(3, 6, 9) 

您可以使用itertools.izip()代替zip(),使一個迭代器,而不是一個列表。