"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Noções básicas sobre compreensões de lista em Python

Noções básicas sobre compreensões de lista em Python

Publicado em 2024-08-27
Navegar:177

Understanding List Comprehensions in Python

As compreensões de lista são um método poderoso e eficiente para criar listas em Python.

Eles oferecem uma maneira concisa e legível de gerar listas com base em iteráveis ​​existentes.

No artigo, explorarei as nuances da compreensão de listas, seus benefícios em relação aos loops tradicionais e várias aplicações práticas.


O que são compreensões de lista?

As compreensões de lista são uma maneira sintaticamente compacta de criar listas combinando looping e lógica condicional em uma única linha de código.

Isso resulta em uma maneira mais legível e expressiva de gerar listas, facilitando a compreensão rápida da intenção do código.


Estrutura e Exemplos

A estrutura básica de uma compreensão de lista é a seguinte:

[expression for item in iterable if condition]

Vamos decompor os componentes desta estrutura:

  • expressão: Este é o valor que será adicionado à nova lista para cada iteração.
  • para item no iterável: Esta é a construção de loop que itera sobre cada item no iterável (por exemplo, lista, tupla, conjunto, dicionário ou gerador).
  • if condição: Esta é uma instrução condicional opcional que filtra os itens a serem incluídos na nova lista.

Exemplos:

Compreensão básica da lista:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]

Este exemplo usa compreensão de lista para criar uma nova lista de quadrados a partir de uma lista existente de números.

Compreensão de lista com uma condição:

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]

Este exemplo filtra os números para incluir apenas números pares, que são então elevados ao quadrado, demonstrando o uso de uma condição if em uma compreensão de lista.


Benefícios da compreensão de lista em relação aos loops tradicionais

As compreensões de lista oferecem diversas vantagens em relação aos loops tradicionais:

  • Brevidade: as compreensões de lista são mais concisas e mais fáceis de ler do que os loops tradicionais, tornando seu código mais fácil de manter e entender.
  • Desempenho: a compreensão de listas costuma ser mais rápida que os loops tradicionais porque são otimizadas para a criação de listas.
  • Legibilidade: A intenção da compreensão de uma lista é mais clara do que a de um loop tradicional, tornando mais fácil para outras pessoas entenderem seu código.

Aplicações Práticas

As compreensões de lista podem ser usadas de várias maneiras para manipular e processar dados.

Aqui estão alguns casos de uso comuns:
Listas de filtragem:

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) 



Este exemplo filtra uma lista de palavras para incluir apenas aquelas com 5 ou menos caracteres.

Transformando listas:

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5)   32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]

Este exemplo converte uma lista de temperaturas de Celsius para Fahrenheit.

Compreensões da lista aninhada:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  

# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Este exemplo nivela uma lista 2D (matriz) em uma lista 1D usando compreensões de lista aninhadas.

Criando listas de tuplas:

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

Este exemplo gera uma lista de todos os pares possíveis (tuplas) de números de dois intervalos.

Removendo duplicatas:

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]

Este exemplo remove duplicatas de uma lista convertendo-as em um conjunto e de volta em uma lista.


Tópicos mais avançados

Vamos agora explorar alguns tópicos mais avançados sobre variações de compreensão de lista.

Expressões do gerador
As expressões geradoras são semelhantes às compreensões de lista, mas geram um iterável em vez de uma lista.

Isso pode ser mais eficiente em termos de memória ao trabalhar com grandes conjuntos de dados, pois os itens são gerados dinamicamente em vez de serem armazenados na memória todos de uma vez.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25

Dicionário e compreensão do conjunto
Python também oferece suporte a compreensões de dicionário e conjunto, que permitem criar dicionários e conjuntos de maneira concisa, semelhante à compreensão de lista.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}


Conclusão

As compreensões de lista são uma ferramenta poderosa e versátil em Python que permite criar listas de maneira concisa e legível.

Eles podem simplificar seu código, melhorar o desempenho e facilitar a manipulação e o processamento de dados.

Ao dominar a compreensão da lista e seus recursos avançados, você pode escrever código Python mais eficiente e limpo.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/devasservice/understanding-list-comprehensions-in-python-1b2p?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3