Achate a lista de lista em Python

Achate a lista de lista em Python
Neste artigo, veremos como podemos achatar a lista da lista de maneiras diferentes. Antes de prosseguir, precisamos saber sobre a diferença entre achatamento superficial e achatamento profundo.

Apontamento superficial: isso significa achatar a lista em um nível de profundidade apenas.

Apontamento profundo: isso significa achatar a lista em qualquer nível de profundidade.

Os tópicos que discutiremos neste artigo estão abaixo:

  • Método 1: Usando para Loop
  • Método 2: Usando uma compreensão de lista
  • Método 3: Usando o método flatten ()
  • Método 4: Usando o método Deepflatten ()
  • Método 5: Usando os pandas achatados
  • Método 6: Usando o matplotlib achatado
  • Método 7: Usando o método Unipath Flatten
  • Método 8: Usando o método SetupTools achatado
  • Método 9: Usando o itertools.Método da cadeia
  • Método 10: Usando o método Numpy Ravel
  • Método 11: Usando o método de remodelamento Numpy
  • Método 12: Usando o método Numpy Flatten
  • Método 13: Usando Numpy.Método concatenado
  • Método 14: Usando o método Numpy Flat

Método 1: Usando para Loop

Neste método, usaremos o loop for, o que é muito comum em todas as linguagens de programação. Iteramos cada elemento da lista e depois iteramos esse elemento ainda mais, como mostrado no programa abaixo.

LST = [[30,7], [8,9], [30,7], [8,9]]
flatten_list = []
para eu em LST:
para o item em i:
flatten_list.Anexar (item)
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", flatten_list)

Saída:

Lista antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9]

Linha 1: Criamos uma lista de listas.

Linha 3 a 5: Nesta linha, estamos executando um loop aninhado para. A parte externa para loop é para a lista principal, e o interior para loop é para os elementos. Se você vir esse loop aninhado, descobrirá que cada elemento da lista de sub-elementos foi extraído e anexar à nova lista (flatten_list). Dessa forma, todos os elementos da sub-lista agora estão separados.

Linha 6 a 7: Essas linhas mostrando a lista original antes e depois de achatar a lista.

Método 2: Usando a compreensão da lista

A compreensão da lista é um método avançado do acima para o loop, onde escrevemos tudo em uma única linha.

LST = [[30,7], [8,9], [30,7], [8,9]]
Imprima ("Lista antes de achatamento", LST)
print ("Lista após achatamento", [Item para I no LST para Item em I])

Saída:

Lista antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9]]
Lista após achatamento [30, 7, 8, 9, 30, 7, 8, 9]

Linha 1: Criamos uma lista da lista.
Linha 3: Esta linha executando dois loops em uma única linha para achatar a lista.

Método 3: Usando o método flatten ()

Outro método é usar a biblioteca flatten (), como mostrado no programa dado abaixo. Mas o método achatado funcionará apenas em um nível da lista aninhada; Se houver listas profundamente aninhadas, isso não achatará a lista. Exemplos de programas aninhados e profundamente aninhados são fornecidos abaixo.

De iteração_utilities Importar Flatten
LST = [[30,7], [8,9], [30,7], [8,9]]
Imprimir (Lista (Flatten (LST))))

Saída:

[30, 7, 8, 9, 30, 7, 8, 9]

Linha 3: Chamamos o método achatado e passamos a lista para isso como um argumento. A saída acima mostra que nossa lista de listas agora está achatada.

Agora, vamos ver uma lista profundamente aninhada para o método achatado.

De iteração_utilities Importar Flatten
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir (Lista (Flatten (LST))))

Saída:

[30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linha 2: Criamos uma lista aninhada e também adicionamos outro elemento [[2]] que está profundamente aninhado.

Linha 3: Chamamos o método achatado e passamos a lista para isso como um argumento. A saída acima mostra que não é feito para achatar a lista profundamente aninhada completamente porque o elemento [2] ainda está dentro de uma lista.

Método 4: Usando o método Deepflatten ()

O outro método é o Deepflatten () que pode achatar a lista profundamente aninhada, que não é feita pelo método achatado, como vimos no exemplo acima.

De iteração_utilities importar Deepflatten
LST = [[30,7], [8,9], [30,7], [8,9], [[200]]]]
Print ("Lista LST antes de achatamento", LST)
flatten_lst = list (Deepflatten (LST))
Imprima ("Lista LST após achatamento", flatten_lst)

Saída:

Lista LST antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[200]]]]
Lista LST após achatamento [30, 7, 8, 9, 30, 7, 8, 9, 200]

Linha 1: Nós importamos o método Deepflatten.

Linha 4: Chamamos o método Deepflatten e passamos a lista profundamente aninhada para isso como um argumento. A saída acima mostra que nossa lista profundamente aninhada agora está achatada.

Método 5: Usando o método Pandas Flatten ()

Este método faz a lista achatada, mesmo que a lista esteja profundamente aninhada.

de pandas.essencial.Importação comum achatada
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Linha 4: Chamamos o método achatado e passamos a lista profundamente aninhada para isso como um argumento. A saída acima mostra que nossa lista profundamente aninhada agora está achatada.

Método 6: Usando o método matplotlib flatten ()

Este método faz a lista achatada, mesmo que a lista esteja profundamente aninhada.

de matplotlib.CBOOK IMPORTE ACLATEN
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Linha 4: Chamamos o método achatado e passamos a lista profundamente aninhada para isso como um argumento. A saída acima mostra que nossa lista profundamente aninhada agora está achatada.

Método 7: Usando o método Unipath Flatten ()

Este método faz a lista achatada, mesmo que a lista esteja profundamente aninhada.

importar unipath
de unipath.Importação de caminho achatado
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Linha 5: Chamamos o método achatado e passamos a lista profundamente aninhada para isso como um argumento. A saída acima mostra que nossa lista profundamente aninhada agora está achatada.

Método 8: Usando o método SetupTools Flatten ()

Este método faz a lista de achatação para apenas um nível.

De SetupTools.Namespaces Import achaten
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linha 2: Criamos uma lista aninhada e também adicionamos outro elemento [[2]] que está profundamente aninhado.

Linha 4: Chamamos o método achatado e passamos a lista para isso como um argumento. A saída acima mostra que não é feito para achatar a lista profundamente aninhada completamente porque o elemento [2] ainda está dentro de uma lista.

Método 9: Usando os ITERTOOLS.Método da cadeia

Para descompactar a lista de listas, também podemos usar os itetools.Método da cadeia. Este método tem ainda duas maneiras de achatar a lista de listas. Ambos os métodos são dados abaixo. Esses métodos também falam a lista de lista para um nível apenas.

Usando o itertools.corrente.de_iterable

importar itterols
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Print ("Lista LST antes de achatamento", LST)
flatten_lst = list ((itertools.corrente.de_iterable (LST)))
Imprima ("Lista LST após achatamento", flatten_lst)

Saída:

Lista LST antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]]
Lista LST após achatamento [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linha 2: Criamos uma lista aninhada e também adicionamos outro elemento [[2]] que está profundamente aninhado.

Linha 4: Chamamos o método itetools.corrente.from_iterable () e passa a lista para isso como um argumento. A saída acima mostra que não é feito para achatar completamente a lista profundamente aninhada porque o elemento [2] ainda está dentro de uma lista.

Usando o * operador

importar itterols
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Print ("Lista LST antes de achatamento", LST)
flatten_lst = list ((itertools.cadeia (*lst)))
Imprima ("Lista LST após achatamento", flatten_lst)

Saída:

Lista LST antes de achatar [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]]
Lista LST após achatamento [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Método 10: Usando Numpy.Método Ravel ()

O outro método é Numpy.Ravel, que também achata a lista aninhada. Mas esse método se achata em um nível de aninhado.

importar numpy como np
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.Ravel ()
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30 7]
[8 9]
[30 7]
[8 9]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9]

Linha 3: Chamamos o método Numpy Ravel. A saída acima mostra que nossa matriz de lista aninhada está agora achatada.

Método 11: Usando o método Numpy Reshape ()

O outro método é o remodelamento Numpy, que também divide a lista aninhada. Mas esse método se achata em um nível de aninhado.

importar numpy como np
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.remodelar (-1)
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", Lista (Flatten (LST))) Lista antes de achatar [[30 7]
[8 9]
[30 7]
[8 9]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9]

Linha 3: Chamamos o método de remodelação (-1). A saída acima mostra que nossa matriz de lista aninhada está agora achatada.

Método 12: Usando o método Numpy Flatten ()

O outro método é Numpy Flatten (), que também achata a lista aninhada. Mas esse método se achata em um nível de aninhado.

importar numpy como np
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.achaten ()
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))


Saída:

Lista antes de achatar [[30 7]
[8 9]
[30 7]
[8 9]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9]

Linha 5: Chamamos o método achatado. A saída acima mostra que nossa matriz de lista aninhada está agora achatada.

Método 13: Usando Numpy.Método concatenato ()

O outro método é Numpy.Concatenate (), que também divide a lista aninhada. Mas esse método se achata em um nível de aninhado.

importar numpy como np
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lista (np.Concatenado (LST))
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30 7]
[8 9]
[30 7]
[8 9]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9]

Linha 3: Chamamos o método Numpy.concatenate () e passe a matriz de listas aninhadas para isso como um argumento. A saída acima mostra que nossa matriz de lista aninhada está agora achatada.

Método 14: Usando o método Numpy Flat

O outro método é Numpy, que também divide a lista aninhada. Mas esse método se achata em um nível de aninhado.

importar numpy como np
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = list (LST.plano)
Imprima ("Lista antes de achatamento", LST)
Print ("Lista achatada:", List (aclatten (LST))))

Saída:

Lista antes de achatar [[30 7]
[8 9]
[30 7]
[8 9]]
Lista achatada: [30, 7, 8, 9, 30, 7, 8, 9]

Linha 3: Chamamos o método plano, e a saída acima mostra que nossa matriz de lista aninhada agora está achatada.

Conclusão:

Neste blog, mostramos métodos diferentes que podemos usar para achatar nossa lista de listas. Todos os métodos acima funcionam perfeitamente para o nível da lista aninhada. Mas se houver listas profundamente aninhadas, alguns dos métodos acima funcionam perfeitamente. Então, depende de você e, de acordo com os requisitos do seu programa, qual método você deseja usar.

O código deste artigo também está disponível no link do Github:
https: // github.com/shekharpandey89/achate