A compreensão de lista em Python é uma sintaxe fácil e compacta para criar uma lista a partir de uma string ou outra lista. É uma maneira muito concisa de criar uma nova lista executando uma operação em cada item da lista existente. A compreensão da lista é consideravelmente mais rápida do que o processamento de uma lista usando o loop for.
É assim que as compreensões de lista são usadas.
# As compreensões de lista permitem que você defina
# listas da mesma forma que Matemáticos fazem!
# Você pode fazer isso com matemática
lista_exponente = [x ** 2 for x in range(10)]
# Ou usando condicionais para filtrar resultados!
# Aqui filtra só se os expoentes forem divisíveis por 2
lista_filtrada = [x for x in lista_exponente if x % 2 == 0]
# Ou faça testes bool sucessivos!
lista_bool = [(x % 2 == 0) for x in lista_exponente]
print(lista_exponente)
print(lista_filtrada)
print(lista_bool)
Saída —--------------------
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 4, 16, 36, 64]
[True, False, True, False, True, False, True, False, True, False]
Basicamente, eles são muito úteis e super elegantes.
Aqui está uma das compreensões de lista mais complicadas!
# Este usa duas compreensões de lista juntas
sem_primos = [j for i in range(2, 8) for j in range(i*2, 50, i)]
primos = [x for x in range(2, 50) if x not in sem_primos]
print(primos)
Saída —--------------------
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Você também pode usá-lo com não números!
palavras = 'A rápida raposa marrom pula sobre o cachorro preguiçoso'.split()
coisas = [[p.upper(), p.lower(), len(p)] for p in palavras]
for i in coisas:
print(i)
Saída —--------------------
['A', 'a', 1]
['RÁPIDA', 'rápida', 6]
['RAPOSA', 'raposa', 6]
['MARROM', 'marrom', 6]
['PULA', 'pula', 4]
['SOBRE', 'sobre', 5]
['O', 'o', 1]
['CACHORRO', 'cachorro', 8]
['PREGUIÇOSO', 'preguiçoso', 10]
Claro, você pode usar funções lambda para obter o mesmo resultado, mas é menos compreensível.
palavras = 'A rápida raposa marrom pula sobre o cachorro preguiçoso'.split()
# Claro, você pode usar funções lambda para obter o mesmo resultado
# Mas é menos compreensível
coisas = map(lambda p: [p.upper(), p.lower(), len(p)], palavras)
for i in coisas:
print(i)
Saída —--------------------
['A', 'a', 1]
['RÁPIDA', 'rápida', 6]
['RAPOSA', 'raposa', 6]
['MARROM', 'marrom', 6]
['PULA', 'pula', 4]
['SOBRE', 'sobre', 5]
['O', 'o', 1]
['CACHORRO', 'cachorro', 8]
['PREGUIÇOSO', 'preguiçoso', 10]
0 Comentários