2011-08-03 8 views
5

Muy bien, así que tengo dos listas que se ven así¿Alguna manera de comprimir a la lista de listas?

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

En este momento, cuando lo haga postal, consigo este

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

¿Hay alguna manera de hacer de esto una lista de listas vez de una matriz, como

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

Gracias!

+3

¿Por qué es necesario que sea una lista de listas en lugar de una lista de tuplas? –

+1

Imagino que tiene la intención de cambiarlos de alguna manera. – kindall

Respuesta

6

Se puede utilizar una comprensión:

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

o generador expresión:

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

Usa una lista de comprensión, y usa izip para evitar crear una lista de intermediarios.

import itertools 

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

Para tener en cuenta, en Python 3+, la función zip devuelve un generador, no es necesario utilizar izip. – utdemir

+0

Sí, buen punto. – 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

Uso map para convertir las tuplas a las listas.

map(list, zip(listx, listy)) 
Cuestiones relacionadas