Compreensão de Listas (List Comprehension)
Atualizado
Atualizado
A compreensão de listas (ou list comprehension, em inglês) é uma poderosa ferramenta em Python que permite criar novas listas de forma concisa e eficiente. Com essa técnica, é possível gerar listas a partir de sequências já existentes aplicando operações e condições, tudo em uma única linha de código. Esse recurso torna o código mais legível e reduz a necessidade de loops explícitos, como o for
.
Neste capítulo, vamos explorar o conceito de compreensão de listas, sua sintaxe e exemplos práticos que ilustram seu uso no dia a dia da programação.
Sintaxe Básica
A sintaxe básica da compreensão de listas segue a seguinte estrutura:
Onde:
nova_expressão é o valor ou operação que será aplicada a cada item da sequência original.
item é o elemento atual da sequência.
sequência pode ser qualquer estrutura iterável, como uma lista, tupla, string ou range.
Vamos ver um exemplo simples:
Saída:
Neste exemplo, o valor de x**2
é calculado para cada x
na sequência range(10)
e armazenado na lista quadrados
.
Compreensão de Listas com Condicionais
É possível adicionar uma condição na compreensão de listas usando uma cláusula if
, permitindo filtrar quais elementos da sequência serão processados. A sintaxe é a seguinte:
Exemplo:
Saída:
Neste caso, a condição if x % 2 == 0
filtra apenas os números pares da sequência, e esses valores são incluídos na lista resultante.
Compreensão de Listas com else
Se quisermos aplicar uma operação diferente para os elementos que não satisfazem uma condição, podemos usar um operador ternário dentro da compreensão de listas:
Exemplo:
Saída:
Aqui, o número x
é mantido se for par, e multiplicado por 2 se for ímpar.
Compreensão de Listas com Múltiplos for
Também é possível aninhar múltiplos loops for
dentro de uma compreensão de listas, o que equivale a usar laços de repetição aninhados em código tradicional. A sintaxe é:
Exemplo:
Saída:
Esse exemplo gera o produto cartesiano entre os elementos das duas listas, criando pares (x, y)
.
Comparação entre Compreensão de Listas e Laços Tradicionais
A principal vantagem da compreensão de listas é a sua concisão. Considere o seguinte exemplo com um loop tradicional:
Embora esse código funcione, ele requer mais linhas e a criação explícita de uma lista vazia. Comparado ao uso de compreensão de listas:
A compreensão de listas é mais direta e requer menos código.
Performance
A compreensão de listas não é apenas mais concisa, mas também pode ser mais rápida em termos de desempenho, já que o processo de criar e preencher a lista acontece de maneira otimizada internamente.
Exemplo de comparação de performance usando a biblioteca timeit
:
Em muitos casos, a compreensão de listas será mais eficiente.
Outros Usos de Compreensão
Além de listas, a mesma sintaxe de compreensão pode ser aplicada a outros tipos de coleções, como sets e dicionários.
Compreensão de sets:
Compreensão de dicionários:
Conclusão
A compreensão de listas é uma ferramenta poderosa que pode melhorar significativamente a clareza e a eficiência do seu código. Embora seja uma técnica simples, ela se aplica a uma ampla variedade de cenários, desde a criação de listas e filtragem de dados até a construção de estruturas mais complexas como dicionários e sets. Ao dominar a compreensão de listas, você será capaz de escrever códigos Python mais limpos e rápidos.