Compreensão de lista em Python
A compreensão de lista em Python é uma forma concisa de criar uma nova lista. Ela funciona aplicando uma expressão a cada elemento de uma lista ou iterável existente para criar a lista nova sem precisar usar loops escritos na forma tradicional. Em outras palavras, a compreensão de lista oferece uma sintaxe enxuta para criar uma lista a partir dos valores de uma lista existente ou outro iterável como outra lista, tupla, string, dicionário ou set.
A sintaxe básica é:
nova_lista = [ expressão for item in iterável]
onde a expressão é aplicada a cada item no iterável para produzir a nova lista. Veja uma comparação entre a criação de uma lista com um for loop tradicional e com compreensão de lista abaixo.
# Exemplo: cria uma lista com um for loop tradicional
minha_lista = []
for i in range(10):
minha_lista.append(i)
print(minha_lista)
# resultado: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Exemplo com compreensão de lista: cria a mesma lista mostrada acima
minha_outra_lista = [i for i in range(10)]
print(minha_outra_lista)
# resultado: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Compreensão de lista em Python com condicionais
A compreensão de lista também pode incluir instruções condicionais. Para esses casos, a sintaxe é definida como:
[ expressão for item in iterável if condição].
# Exemplo de compreensão de lista com condicional
nomes = ['Aline', 'Bianca', 'Alice', 'Beatriz', 'Carla', 'Daniela', 'Ana Flor']
# cria nova lista apenas com nomes que não iniciam com a letra A
nova_lista = [i for i in nomes if i[0] != 'A']
print(nova_lista)
# resultado: ['Bianca', 'Beatriz', 'Carla', 'Daniela']
Apenas com uma condição, como mostrado acima, a compreensão de lista cria uma nova lista atuando como um filtro. No entanto, condicionais podem ser aplicados com compreensão de lista para criar computações mais complexas. No exemplo abaixo, a compreensão de lista foi combinada com if else. Nesse tipo de caso, a sintaxe muda para:
[if condição expressão1 else expressão2 for item in iterável].
# Exemplo de compreensão de lista com condicional com if else
precos = [110, 120, 160, 270, 200, 190, 230]
# cria nova lista com preços aumentados em 10% quando eles
# são menores ou iguais a 150. Para valores maiores
# os itens são inseridos sem modificações
nova_lista = [i + 0.1*i if i <= 150 else i for i in precos]
print(nova_lista)
# resultado: [121.0, 132.0, 160, 270, 200, 190, 230]
Compreensão de lista também pode incluir loops aninhados, permitindo que você crie estruturas de dados complexas, como matrizes. Mas é muito importante considerar o balanço entre concisão no código e legibilidade. Compreensão de lista com condicionais e loops aninhados complexamente tornam os códigos de difícil compreensão e devem ser evitados. Portanto, embora a compreensão de listas torne o código mais conciso, é importante equilibrar a legibilidade e a capacidade de manutenção, especialmente para expressões muito longas ou complexas.
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.