2011-08-03 38 views
5

好了,所以我有兩個列表看起來像這樣的任何壓縮到列表的方式?

listx = [2, 4, 5, 9, 11] 
listy = [3, 5, 9, 12, 14] 

現在,當我做拉鍊,我得到這個

listz = zip(listx, listy) 
listz = [(2,3), (4,5), (5,9), (9, 12), (11,14)] 

有什麼辦法,使這個名單列表,而不是的陣列,像這樣

listz = [[2,3], [4,5], [5,9], [9,12], [11,14]] 

謝謝!

+3

爲什麼你需要它是列表列表而不是元組列表? –

+1

我想他打算以某種方式改變它們。 – kindall

回答

6

你可以使用一個理解:

listz = [list(i) for i in zip(listx, listy)] 

或發電機的表達:

listz = (list(i) for i in zip(listx, listy)) 
2

使用列表理解,並使用izip來避免創建中間列表。

import itertools 

listz = [list(z) for z in itertools.izip(listx, listy)] 
+3

只需注意,在Python 3+中,zip函數返回一個生成器,然後不需要使用izip。 – utdemir

+0

是的,好點。 – kindall

0
>>> from itertools import izip, imap 
>>> listx = [2, 4, 5, 9, 11] 
>>> listy = [3, 5, 9, 12, 14] 
>>> listz = list(imap(list, izip(listx, listy))) 
>>> listz 
[[2, 3], [4, 5], [5, 9], [9, 12], [11, 14]] 
5

使用map的元組轉換成列表。

map(list, zip(listx, listy))