¿Cómo descomprimir una lista de tuplas en listas individuales?

Posible duplicado:
Una función de transposición / descompresión en Python

Tengo una lista de tuplas, donde quiero descomprimir esta lista en dos listas independientes. Estoy buscando alguna operación estandarizada en Python.

>>> l = [(1,2), (3,4), (8,9)] >>> f_xxx (l) [ [1, 3, 8], [2, 4, 9] ] 

Estoy buscando una forma sucinta y pythonica para lograr esto.

Básicamente, estoy buscando la operación inversa de la función zip() .

Utilice zip(*list) :

 >>> l = [(1,2), (3,4), (8,9)] >>> list(zip(*l)) [(1, 3, 8), (2, 4, 9)] 

La función zip() empareja los elementos de todas las entradas, comenzando con los primeros valores, luego el segundo, etc. Al usar *l se aplican todas las tuplas en l como argumentos separados a la función zip() , por lo que los pares zip() arriba 1 con 3 con 8 primero, luego 2 con 4 y 9 . Resultan que se corresponden bien con las columnas, o con la transposición de l .

zip() produce tuplas; Si debe tener objetos de listas mutables, simplemente map() las tuplas a listas o use una comprensión de lista para producir una lista de listas:

 map(list, zip(*l)) # keep it a generator [list(t) for t in zip(*l)] # consume the zip generator into a list of lists 

Si quieres una lista de listas:

 >>> [list(t) for t in zip(*l)] [[1, 3, 8], [2, 4, 9]] 

Si una lista de tuplas está bien:

 >>> zip(*l) [(1, 3, 8), (2, 4, 9)]