Pular para o conteúdo

Como Remover a Aninhamento de Listas no Python

[

Como Aplanar uma Lista de Listas em Python

Às vezes, quando você está trabalhando com dados, pode ter os dados como uma lista de listas aninhadas. Uma operação comum é aplanar esses dados em uma lista unidimensional em Python. Aplanar uma lista envolve a conversão de uma lista multidimensional, como uma matriz, em uma lista unidimensional.

Para ilustrar melhor o que significa aplanar uma lista, digamos que você tenha a seguinte matriz de valores numéricos:

Python

matrix = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]

A variável matrix contém uma lista do Python que contém quatro listas aninhadas. Cada lista aninhada representa uma linha na matriz. As linhas armazenam quatro itens ou números cada uma. Agora digamos que você queira transformar essa matriz na seguinte lista:

Python

[9, 3, 8, 3, 4, 5, 2, 8, 6, 4, 3, 1, 1, 0, 4, 5]

Como você consegue aplanar sua matriz e obter uma lista unidimensional como a acima? Neste tutorial, você aprenderá como fazer isso em Python.

Como Aplanar uma Lista de Listas com um Loop for

Como você pode aplanar uma lista de listas em Python? Em geral, para aplanar uma lista de listas, você pode seguir as seguintes etapas de forma explícita ou implícita:

  1. Criar uma nova lista vazia para armazenar os dados aplanados.
  2. Iterar sobre cada lista aninhada ou lista interna na lista original.
  3. Adicionar cada item da lista atual à lista de dados aplanados.
  4. Retornar a lista resultante com os dados aplanados.

Para continuar com o exemplo matrix, veja como você traduziria essas etapas para código Python usando um loop for e o método .extend():

Python

def aplanar_extend(matrix):
lista_aplanada = []
for linha in matrix:
lista_aplanada.extend(linha)
return lista_aplanada

Dentro de aplanar_extend(), você primeiro cria uma nova lista vazia chamada lista_aplanada. Você usará esta lista para armazenar os dados aplanados quando extraí-los de matrix. Em seguida, você inicia um loop para iterar sobre as listas internas de matrix. Neste exemplo, você usa o nome linha para representar a lista aninhada atual.

Agora execute o seguinte código para verificar se sua função faz o trabalho:

matriz_aplanada = aplanar_extend(matrix)
print(matriz_aplanada)

Você deve ver a lista aplanada como resultado: [9, 3, 8, 3, 4, 5, 2, 8, 6, 4, 3, 1, 1, 0, 4, 5].

Existem outras maneiras de aplanar uma lista de listas em Python, incluindo o uso de compreensões de lista e bibliotecas de terceiros, como o NumPy. Neste tutorial, você explorou como aplanar uma lista usando um loop for. No entanto, você pode experimentar as outras abordagens mencionadas à medida que avança em sua jornada de programação em Python.

Considerando o Desempenho ao Aplanar Suas Listas

Ao aplanar listas grandes, é importante considerar o desempenho das soluções que você escolher. Como você viu, usar um loop for e o método .extend() é uma abordagem legível e fácil de entender. No entanto, existem outras abordagens que podem ser mais eficientes em termos de tempo de execução e uso de memória.

Por exemplo, vamos comparar a abordagem do loop for com o uso da função itertools.chain() para concatenar iteráveis. Aqui está como seria a versão usando itertools.chain():

Python

import itertools
def aplanar_chain(matrix):
return list(itertools.chain(*matrix))

Essa função utiliza a função chain() do módulo itertools para concatenar todos os iteráveis passados como argumentos em uma única sequência. Neste caso, você desempacota as listas aninhadas usando o operador * para passá-las como argumento para chain().

Essa abordagem usando itertools.chain() é mais concisa e pode ser mais eficiente em termos de desempenho para algumas listas, especialmente aquelas com muitos itens. No entanto, é importante fazer testes e avaliar as diferenças de desempenho em seu caso específico.

Conclusão

Aplanar uma lista de listas é uma operação comum em Python ao trabalhar com dados multidimensionais. Neste tutorial, você aprendeu duas maneiras diferentes de aplanar uma lista: usando um loop for e o método .extend(), e usando a função itertools.chain(). Agora você tem o conhecimento necessário para lidar com listas aninhadas em Python e convertê-las em listas unidimensionais.

Lembre-se de considerar o desempenho ao escolher a abordagem correta para a sua situação. Algumas soluções podem ser mais eficientes em termos de tempo de execução e uso de memória do que outras. Experimente as diferentes abordagens e escolha aquela que melhor se adequar às suas necessidades.