tuplas - metodos de listas en python
Desempaquetar una lista/tupla de pares en dos listas/tuplas (2)
Posible duplicado:
Una función de transposición / descompresión en Python
Tengo una lista que se ve así:
list = ((''1'',''a''),(''2'',''b''),(''3'',''c''),(''4'',''d''))
Quiero separar la lista en 2 listas.
list1 = (''1'',''2'',''3'',''4'')
list2 = (''a'',''b'',''c'',''d'')
Puedo hacerlo, por ejemplo, con:
list1 = []
list2 = []
for i in list:
list1.append(i[0])
list2.append(i[1])
Pero quiero saber si hay una solución más elegante.
>>> source_list = (''1'',''a''),(''2'',''b''),(''3'',''c''),(''4'',''d'')
>>> list1, list2 = zip(*source_list)
>>> list1
(''1'', ''2'', ''3'', ''4'')
>>> list2
(''a'', ''b'', ''c'', ''d'')
Editar: Tenga en cuenta que zip(*iterable)
es su propia inversa:
>>> list(source_list) == zip(*zip(*source_list))
True
Al desempacar en dos listas, esto se convierte en:
>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True
Adición sugerida por rocksportrocker.
list1= ( x[0] for x in source_list )
list2= ( x[1] for x in source_list )