Tengo una lista bidimensional. Ejemplo:

list = [[1,4,7], [2,5,8], [3,6,9]]

Necesito hacer una nueva lista cuyos elementos son los elementos de cada subelemento preservando el orden.

Ejemplo:

final_list = [1,2,3,4,5,6,7,8,9]
1
max fraguas 13 nov. 2017 a las 03:19

2 respuestas

La mejor respuesta

P: La nueva lista debe tomar primero el primer elemento de cada lista, luego el segundo, y así sucesivamente ...


A: Puede utilizar zip y una lista de comprensión.

list_1 = [1,4,7]
list_2 = [2,5,8]
list_3 = [3,6,9]


print([x for lst in zip(list_1, list_2, list_3) for x in lst])
# outputs > [1, 2, 3, 4, 5, 6, 7, 8, 9]

Para su nueva lista, puede hacer lo mismo, pero primero descomprima la lista con un *

new_list = [[1,4,7], [2,5,8], [3,6,9]]

print([x for lst in zip(*new_list) for x in lst])
# outputs > [1, 2, 3, 4, 5, 6, 7, 8, 9]
2
Ilja Everilä 13 nov. 2017 a las 06:18

Primero transponer la matriz de la lista con zip y luego encadenar toda la lista interna con itertools

También cambie el nombre de la lista de variables a lst, no es una buena práctica usar list incorporado como nombre de variable

import itertools
lst = [[1,4,7], [2,5,8], [3,6,9]]
final_list = list(itertools.chain.from_iterable(zip(*lst)))
# final_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
1
Skycc 13 nov. 2017 a las 00:43