Cómo hacer una lista plana de una lista de listas

En este articulo te enseñare a hacer una lista planta partiendo de una lista de listas. Es un algoritmo en python más común de lo que imaginas.

Recomendado: mejores frameworks python

Dada una lista de listas t,

flat_list = [item for sublist in t for item in sublist]

significado:

flat_list = []
for sublist in t:
    for item in sublist:
        flat_list.append(item)

es más rápido que los accesos directos enviados hasta ahora. (t es la lista para aplanar.)

Aquí está la función correspondiente:

def flatten
    return [item for sublist in t for item in sublist]

Como prueba puedes usar timeit módulo en la biblioteca predeterminada:

$ python -mtimeit -s't=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in t for item in sublist]'
10000 loops, best of 3: 143 usec per loop
$ python -mtimeit -s't=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(t, [])'
1000 loops, best of 3: 969 usec per loop
$ python -mtimeit -s't=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'reduce(lambda x,y: x+y,t)'
1000 loops, best of 3: 1.1 msec per loop

Explicación: los atajos basados ​​en + (incluyendo el uso implícito de sum) es de necesidad, O(T**2) cuando hay T sublistas: cuando la lista de resultados intermedios se vuelve más larga, se asigna un nuevo objeto de lista de resultados intermedios en cada paso, y todos los elementos del resultado intermedio anterior deben copiarse (así como algunos nuevos agregados en el fin).

Recomendado: preguntas python

Entonces, en aras de la claridad y sin pérdida real de generalidad, digamos que tiene T-sublistas con cada k elemento: los primeros k elementos se copian de un lado a otro T-1 veces, los segundos k elementos T-2 veces, y así en ; el número total de copias es k veces la suma de x para x de 1 a T excluida, es decir k * (T**2)/2.

Recomendado: Bibliotecas python recomendadas para machine learning

List Understanding solo genera una lista una vez y también copia cada elemento (desde su dirección original a la lista de resultados) exactamente una vez.

Aprende más de python con estos temas:

¿ Te fue útil este artículo ?
⬇️ Ayudame compartiendo para poder llegar a más personas.⬇️