[Python-es] ¿cómo puedo convertir una lista multidimensional en listas unidimensionales?

oscar ramirez tuxskar en gmail.com
Jue Mar 17 17:42:33 EDT 2016


Hola Jose Manuel,

Se puede hacer de forma pythonica usando la función de la librería
estandard *zip* (https://docs.python.org/2/library/functions.html#zip)

matriz =  [[8,2], [4,3], [9,1], [3,5], [5,4], [3,1], [1,1]]
tupla1, tupla2 = zip(*Matriz)

Las variables tupla1 y tupla2 no son listas como tu querías pero sí que son
tuplas, si realmente necesitas que sean listas puedes convertirlas usando:

lista1 = list(tupla1)
lista2 = list(tupla2)

Espero que te ayude.

2016-03-17 22:34 GMT+01:00 Jose Manuel Llorente Pinto <manequick en gmail.com>:

> Muchas gracias Ricardo.
> Funciona perfectamente. Y además gracias a eso también he conseguido
> hacerlo con el bucle for.
> El problema residía en que al inicializar las variables no las
> dimensionaba bien; cuando me he dado cuenta, he escrito *variable =
> [None]*n *y también corre.
> Muy agradecido.
>
> El 17 de marzo de 2016, 21:03, Ricardo Cárdenes <
> ricardo.cardenes en gmail.com> escribió:
>
>> De todas maneras, te respondo. Eso es un problema conocido y la manera
>> más rápida de hacer lo que quieres es esto:
>>
>>   Lista1, Lista2 = zip(*Matriz)
>>
>> usando herramientas propias de Python. Pero si necesitas escribir código
>> que lo haga (eg. para una tarea que precise mostrar que sabes usar bucles),
>> mejor no uses eso.
>>
>> Saludos,
>> Ricardo
>>
>> 2016-03-17 9:59 GMT-10:00 Ricardo Cárdenes <ricardo.cardenes en gmail.com>:
>>
>>> Muestra el código que has intentado.
>>>
>>> Saludos,
>>> Ricardo
>>>
>>> 2016-03-17 9:32 GMT-10:00 Jose Manuel Llorente Pinto <
>>> manequick en gmail.com>:
>>>
>>>> Tengo una lista equivalente a una matriz de n filas por 2 columnas y
>>>> quiero individualizar cada una de las dos columnas. Lo he intentado con
>>>> diferentes bucles for, pero en todos los casos me arroja un error del tipo
>>>> "list assignment index out of range".
>>>> Un ejemplo de lo que pretendo sería lo siguiente:
>>>>
>>>> Matriz = [[8,2], [4,3], [9,1], [3,5], [5,4], [3,1], [1,1]]
>>>>
>>>> y quiero obtener:
>>>>
>>>> Lista1 = [8,4,9,3,5,3,1]
>>>> Lista2 = [2,3,1,5,4,1,1]
>>>>
>>>> Como me estoy iniciando en Python es probable que la resolución de esto
>>>> sea bastante simple , pero después de buscar y buscar no he encontrado
>>>> ninguna solución.
>>>>
>>>> Muchas gracias.
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20160317/2ea96797/attachment.html>


Más información sobre la lista de distribución Python-es