Vamos lá, Gabriel!
A sintaxe da list comprehension
em Python tem a seguinte estrutura geral:
[nova_lista for elemento in iteravel condição]
Onde:
nova_lista
é a lista resultante, contendo os elementos gerados pela compreensão de lista
elemento
é a variável que representa cada elemento do iterável
iterável
é a estrutura de dados a ser percorrida
condição
é uma expressão opcional que determina quais elementos do iterável serão incluídos na lista resultante.
Vou trazer dois exemplos, um sem condição e outro com condição!
Exemplo 1
Imagina que você tenha uma variável chamada numeros que armazena uma lista com alguns valores:
numeros = [1, 2, 3, 4, 5]
E se você quiser saber o quadrado de cada um desses valores usando List Comprehension? Podemos fazer o seguinte:
quadrados = [x**2 for x in numeros]
Essa expressão significa que cada elemento da nova lista quadrados
é o resultado da elevação ao quadrado do elemento correspondente da lista numeros
. No caso, a expressão x**2
é a expressão que eleva o número x
ao quadrado. A variável x
é um iterador que itera sobre todos os elementos da lista numeros
. Ou seja, para cada valor da lista numeros
, a expressão x**2
é aplicada e o resultado é adicionado à nova lista quadrados.
A lista quadrados
vai ter o seguinte resultado:
[1, 4, 9, 16, 25]
Essa é uma forma simples e concisa de criar uma nova lista a partir de outra lista, aplicando uma transformação a cada elemento, usando list comprehension em Python.
Exemplo 2
Agora vou dar um outro exemplo usando strings ao invés de números e com uma condição.
Temos a seguinte lista:
frutas = ['Laranja', 'Melancia', 'Kiwi', 'Amora', 'Maçã',
'Abacaxi', 'Uva', 'Morango', 'Tangerina', 'Abacate', 'Acerola',
'Banana', 'Caqui', 'Graviola', 'Carambola', 'Mirtilo', 'Cereja',
'Figo', 'Framboesa', 'Goiaba', 'Jabuticaba', 'Jaca', 'Mamão',
'Manga', 'Maracujá', 'Melão', 'Pêssego', 'Pitaya', 'Romã']
Mas eu quero uma nova lista somente com as frutas que começam com a letra C. E aí? como faço isso?
nova_lista = [x for x in frutas if 'C' in x]
Essa expressão significa que cada elemento da nova lista é um elemento da lista frutas, desde que contenha a letra 'C'.
Ou seja, a expressãoif 'C' in x
é uma condição que testa se a letra 'C' está presente em cada elemento da lista frutas. Se a condição for verdadeira, o elemento correspondente é adicionado à nova lista nova_lista
.
Com esses exemplos ficou mais fácil entender como aplicar a sintaxe?