Pular para o conteúdo

Entenda o uso do if/else na list comprehension.

[

Quando usar uma List Comprehension em Python

por James Timmins em 22 de Janeiro, 2024

Uma das características mais distintivas do Python é a list comprehension, que você pode usar para criar funcionalidades poderosas em uma única linha de código. No entanto, muitos desenvolvedores têm dificuldade em aproveitar totalmente os recursos avançados das list comprehensions em Python. Alguns programadores até as usam demais, o que pode resultar em código menos eficiente e mais difícil de ler.

Ao final deste tutorial, você entenderá toda a potência das list comprehensions em Python e saberá como usar seus recursos com facilidade. Você também terá uma compreensão das compensações que vêm com o uso delas, para poder determinar quando outras abordagens são preferíveis.

Neste tutorial, você aprenderá como:

  • Reescrever loops e chamadas de map() como list comprehensions em Python
  • Escolher entre comprehensions, loops e chamadas de map()
  • Aumentar o poder das suas comprehensions com lógica condicional
  • Usar comprehensions para substituir filter()
  • Perfilar seu código para resolver questões de desempenho

Transformando Listas em Python

Existem algumas maneiras diferentes de criar e adicionar elementos a uma lista em Python. Nesta seção, você irá explorar loops for e a função map() para realizar essas tarefas. Em seguida, você aprenderá como usar list comprehensions e em que momentos elas podem beneficiar seu programa em Python.

Usando loops for

  1. Crie uma lista vazia.

Se você quiser criar uma lista contendo os primeiros dez quadrados perfeitos, poderá realizar essas etapas em três linhas de código:

squares = []
for number in range(10):
squares.append(number * number)
print(squares)

Aqui, você cria uma lista vazia chamada squares. Em seguida, usa um loop for para percorrer range(10). Por fim, multiplica cada número por si mesmo e adiciona o resultado ao final da lista.

Trabalhando com objetos map

Aqui está um exemplo que ilustra como criar uma lista de cubos dos números de 1 a 10 usando o map():

cubes = list(map(lambda x: x ** 3, range(1, 11)))
print(cubes)

Neste exemplo, usamos uma função lambda para elevar cada número ao cubo e o map() para aplicar essa função a cada elemento do range de 1 a 10. Em seguida, convertemos o objeto map() em uma lista usando a função list() e imprimimos a lista resultante.

Aproveitando as List Comprehensions

Agora que você viu como usar loops for e a função map() para criar listas em Python, vamos explorar as list comprehensions. Elas são uma sintaxe concisa e poderosa para criar listas, combinando a criação de uma lista vazia com a iteração sobre um iterável e a expressão para adicionar elementos à lista.

Aqui está como você pode reescrever o exemplo anterior usando uma list comprehension:

squares = [number * number for number in range(10)]
print(squares)

Nesta list comprehension, [number * number for number in range(10)], estamos multiplicando cada número por si mesmo para obter o quadrado de cada número no range de 0 a 9. A sintaxe [expression for item in iterable] cria uma nova lista, onde cada elemento é o resultado da expressão aplicada a cada item do iterável.

As list comprehensions são uma forma extremamente legível e concisa de criar listas em Python. Elas são particularmente úteis quando você precisa transformar ou filtrar elementos de um iterável de maneira eficiente.

Em resumo, as list comprehensions são uma ferramenta poderosa para criar e transformar listas em Python. Elas permitem escrever código mais conciso e legível, ajudando na produtividade e no desempenho do seu programa. No entanto, é importante lembrar que existem casos em que outras abordagens, como loops for ou map(), podem ser mais adequadas. Portanto, é importante entender as características e os trade-offs das list comprehensions para decidir quando usá-las da maneira mais eficaz possível.