Función Transpose / Unzip (inverso de zip)?

Tengo una lista de tuplas de 2 elementos y me gustaría convertirlas en 2 listas donde la primera contiene el primer elemento de cada tupla y la segunda lista contiene el segundo elemento.

Por ejemplo:

original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)] # and I want to become... result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4]) 

¿Hay una función incorporada que hace eso?

Related of "Función Transpose / Unzip (inverso de zip)?"

zip es su propio inverso! Siempre que utilice el operador especial *.

 >>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)]) [('a', 'b', 'c', 'd'), (1, 2, 3, 4)] 

La forma en que esto funciona es llamando a zip con los argumentos:

 zip(('a', 1), ('b', 2), ('c', 3), ('d', 4)) 

… excepto que los argumentos se pasan directamente a zip (después de convertirlos en una tupla), por lo que no hay que preocuparse por la cantidad de argumentos que son demasiado grandes.