Pular para o conteúdo

Como usar uma lista de listas em 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 converter 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:

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

A variável matriz armazena 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. Agora imagine que você queira transformar essa matriz na seguinte lista:

[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 mencionada 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 explicitamente ou implicitamente:

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

Em seguida, você precisa de uma maneira de adicionar itens à nova lista aplanada. Para isso, você tem algumas opções válidas. Primeiro, você pode usar o método .extend() da própria classe list, e depois pode usar o operador de concatenação aumentado (+=).

Para continuar com o exemplo da matriz, aqui está como você pode traduzir essas etapas para o código Python usando um loop for e o método .extend():

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

Dentro de aplanar_extend(), você primeiro cria uma nova lista vazia chamada lista_aplanada. Você usará essa lista para armazenar os dados aplanados quando os extrair da matriz. Em seguida, você começa um loop para iterar sobre as listas internas ou aninhadas da matriz. Neste exemplo, você usa o nome linha para representar a lista aninhada atual.

Em cada iteração, você usa .extend() para adicionar o conteúdo da sublista atual à lista_aplanada. Este método recebe um objeto iterável como argumento e anexa seus itens ao final da lista de destino.

Agora execute o código a seguir para verificar se sua função funciona corretamente:

matriz = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
lista_aplanada = aplanar_extend(matriz)
print(lista_aplanada)

Output:

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

Você obtém a lista aplanada esperada.

Agora que você sabe como aplanar uma lista de listas usando um loop for e o método .extend(), vamos explorar outras maneiras de realizar essa tarefa em Python.

Usando uma Compreensão para Aplanar uma Lista de Listas

Uma maneira concisa e elegante de aplanar uma lista de listas em Python é usar uma compreensão de lista. Uma compreensão de lista é uma construção especial do Python que permite criar uma nova lista com base em outra lista ou iterável existente.

Para aplanar uma lista de listas usando uma compreensão de lista, você pode escrever o seguinte código:

def aplanar_compreensao(matriz):
return [item for sublist in matriz for item in sublist]

Neste exemplo, você cria uma nova lista usando uma compreensão de lista. A compreensão de lista possui duas partes principais:

  1. [item for sublist in matriz]: Isso itera sobre cada lista aninhada (sublist) na matriz e após isso, itera sobre cada item (item) na lista aninhada. Cada item é adicionado à nova lista usando a sintaxe item for sublist in matriz.
  2. for item in sublist: Isso itera sobre cada item na lista aninhada atual (sublist) e adiciona o item à nova lista.

Agora, você pode chamar a função aplanar_compreensao com a matriz de exemplo para obter a lista aplanada:

matriz = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
lista_aplanada = aplanar_compreensao(matriz)
print(lista_aplanada)

Saída:

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

O resultado é novamente a lista aplanada desejada.

Aplanhando uma Lista Usando Ferramentas da Biblioteca Padrão e do Python Integrado

Além de usar um loop for ou compreensão de lista, você também pode usar algumas ferramentas da biblioteca padrão e do Python integrado para aplanar uma lista de listas.

Encadeando Iteráveis com itertools.chain()

O módulo itertools da biblioteca padrão do Python fornece a função chain(), que permite concatenar vários iteráveis em um único iterável. Você pode usar essa função para aplanar uma lista de listas:

from itertools import chain
def aplanar_chain(matriz):
return list(chain(*matriz))

Neste exemplo, você importa a função chain() do módulo itertools. Em seguida, você define a função aplanar_chain(), que recebe a matriz como argumento. Dentro da função, você usa a função chain() juntamente com o operador * (asterisco) para descompactar a matriz e passar cada lista aninhada como um argumento separado para chain(). Em seguida, você transforma o resultado em uma lista usando a função list().

Para aplanar a matriz de exemplo, você pode chamar a função da seguinte maneira:

matriz = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
lista_aplanada = aplanar_chain(matriz)
print(lista_aplanada)

Saída:

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

Novamente, você obtém a lista aplanada esperada.

Concatenando Listas com functools.reduce()

O módulo functools da biblioteca padrão do Python fornece a função reduce(), que permite aplicar uma função a pares consecutivos de elementos de um iterável até que apenas um valor único seja obtido. Você pode usar essa função para aplanar uma lista de listas, concatenando as listas progressivamente até obter uma lista aplanada:

from functools import reduce
def concatenar_reduce(matriz):
return reduce(lambda x, y: x + y, matriz)

Neste exemplo, você importa a função reduce() do módulo functools. Em seguida, você define a função concatenar_reduce(), que recebe a matriz como argumento. Dentro da função, você usa a função reduce() junto com uma função lambda para somar duas listas consecutivas e obter uma lista concatenada. A função reduce() é aplicada em pares consecutivos de listas até que apenas uma lista aplanada permaneça.

Chame a função concatenar_reduce() com a matriz de exemplo para obter a lista aplanada:

matriz = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
lista_aplanada = concatenar_reduce(matriz)
print(lista_aplanada)

Saída:

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

Mais uma vez, você obtém a lista aplanada esperada.

Usando sum() para Concatenar Listas

Além de usar functools.reduce(), outra opção é usar a função sum() do Python integrado para concatenar as listas. A função sum() pode ser usada com uma lista de listas para concatenar os elementos e criar uma lista aplanada:

def concatenar_sum(matriz):
return sum(matriz, [])

Neste exemplo, você define a função concatenar_sum(), que recebe a matriz como argumento. Dentro da função, você usa a função sum() com uma lista vazia ([]) como argumento de inicialização. A função sum() itera sobre cada lista na matriz e as concatena usando o operador +. A lista vazia é usada para garantir que a função sum() retorne uma nova lista vazia na primeira iteração, em vez de tentar somar os elementos com um valor numérico.

Chame a função concatenar_sum() com a matriz de exemplo para obter a lista aplanada:

matriz = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
lista_aplanada = concatenar_sum(matriz)
print(lista_aplanada)

Saída:

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

Uma vez mais, você obtém a lista aplanada esperada.

Considerando o Desempenho ao Aplanar Suas Listas

Ao aplanar listas, é importante considerar o desempenho, especialmente quando se trabalha com grandes quantidades de dados. Alguns métodos podem ser mais eficientes do que outros, dependendo do tamanho da lista e da quantidade de sublistas.

Por exemplo, usar um loop for com o método .extend() ou usar uma compreensão de lista tende a ser mais eficiente para listas pequenas ou com um número limitado de sublistas. No entanto, para listas maiores ou com muitas sublistas, pode ser mais eficiente usar ferramentas da biblioteca NumPy, como veremos a seguir.

Aplanhando Listas Python para Ciência de Dados com NumPy

Se você está trabalhando com grandes conjuntos de dados ou precisa realizar cálculos complexos em arrays multidimensionais, a biblioteca NumPy é uma opção poderosa. O NumPy oferece suporte a arrays multidimensionais eficientes e fornece várias funções para trabalhar com esses arrays, incluindo a função flatten(), que pode ser usada para aplanar arrays multidimensionais.

Para aplanar uma lista de listas usando o NumPy, você pode fazer o seguinte:

import numpy as np
def aplanar_numpy(matriz):
return np.array(matriz).flatten().tolist()

Neste exemplo, você importa a biblioteca NumPy usando o apelido np. Em seguida, você define a função aplanar_numpy(), que recebe a matriz como argumento. Dentro da função, você usa np.array() para criar uma matriz NumPy a partir da lista de listas. Em seguida, você usa o método .flatten() para aplanar a matriz NumPy e, finalmente, você usa o método .tolist() para converter a matriz aplanada de volta em uma lista do Python.

Chame a função aplanar_numpy() com a matriz de exemplo para obter a lista aplanada:

matriz = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
lista_aplanada = aplanar_numpy(matriz)
print(lista_aplanada)

Saída:

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

Você obtém a lista aplanada esperada usando o NumPy.

Conclusão

Aplanhar uma lista de listas em Python é um processo comum ao trabalhar com dados. Neste artigo, você aprendeu várias maneiras de realizar essa tarefa, desde o uso de um loop for e o método .extend() até o uso de compreensões de lista, ferramentas da biblioteca padrão e do Python integrado, e a biblioteca NumPy para lidar com arrays multidimensionais.

Lembre-se de considerar o desempenho ao escolher o método adequado para achatamento de listas, especialmente para listas grandes ou com muitas sublistas. Use as técnicas apresentadas aqui de acordo com suas necessidades específicas e com a natureza dos seus dados.

Agora você tem as ferramentas necessárias para aplanar listas de listas em Python e pode aplicar esse conhecimento em seus próprios projetos de programação. Se você quiser se aprofundar nas técnicas de achatamento de listas em Python, não deixe de conferir o código de exemplo gratuito fornecido junto com este artigo.

Tutoriais de Python →
Artigos aprofundados e cursos em vídeo
Caminhos de Aprendizagem →
Planos de estudo guiados para aprendizado acelerado
Testes →
Verifique seu progresso de aprendizado
Explorar Tópicos →
Enfoque em uma área específica ou nível de habilidade
Bate-papo da Comunidade →
Aprenda com outros Pythonistas
Horário de Atendimento →
Chamadas de perguntas e respostas ao vivo com especialistas em Python
Podcast →
Ouça as novidades no mundo do Python
Livros →
Aprofunde seu conhecimento e aprenda offline
Desbloqueie Todo o Conteúdo →

  • Mais

Histórias de Aprendizes Boletim Informativo do Python Quadro de Empregos Python Conheça a Equipe Torne-se um Escritor de Tutoriais [Torne-se um Instrutor de Vídeo](/become-an- instructor/)

/

— Série de E-mails GRÁTIS —

🐍 Dicas de Python 💌

Python Tricks Dictionary Merge

Receba Dicas de Python »

🔒 Sem spam. Cancele a inscrição a qualquer momento.

Explorar Tópicos Caminhos de Aprendizagem Guiada
Básicos Intermediários Avançados


api melhores-práticas carreira comunidade bancos de dados ciência de dados estruturas de dados visualização de dados devops django docker editores flask front-end desenvolvimento de jogos interface gráfica aprendizado de máquina numpy projetos python testes ferramentas desenvolvimento web web scraping

Tabela de Conteúdo

  • Como Aplanhar uma Lista de Listas com um Loop for
  • Usando uma Compreensão para Aplanhar uma Lista de Listas
  • Aplanhando uma Lista Usando Ferramentas da Biblioteca Padrão e do Python Integrado
    • Encadeando Iteráveis com itertools.chain()
    • Concatenando Listas com functools.reduce()
    • Usando sum() para Concatenar Listas
  • Considerando o Desempenho ao Aplanhar Suas Listas
  • Aplanhando Listas Python para Ciência de Dados com NumPy
  • Conclusão

Remover ads