Listas em Python, como já havíamos falado antes, é uma função poderosa e muito usada em programação e ciência de dados. Nesse post vamos expandir o nosso conhecimento e explicar como Listas em Python podem simplificar loops.

Ambos assuntos já cobrimos extensivamente em outros posts. Listas é uma função a qual uso com muita frequência. Assim como loops é um metódo prático.

Nesse post, vamos explicar como um pode complementar o outro.

Sintaxe Básica

A expressão sempre começa com for (para). Você adiciona a variável que quiser (tente manter ordem de nomenclatura). Vamos ver um exemplo:

dobros = []    # iniciando uma lista vazia
for x in range(5):
    dobros.append(x * 2)

Existe uma outra maneira de chegar aos mesmos resultados com uma expressão mais elegante. Ao invês de fazer duas linhas, podemos fazer com uma única linha.

dobros = [x * 2 for x in range(5)]
[0, 2, 4, 6, 8]

O que que aconteceu? Vamos ver com detalhes.

compreensão de lista

Fizemos uma reorganização para ficar um código mais limpo e fácil de entender.

Você observa aqui uma diferença: é que colocamos os [ e ] para que fizesse a lista. Vamos explicar com mais detalhes.[ EXPRESSÃO for ITEM in ITERÁVEL ]- EXPRESSÃO: o que você quer coletar ou transformar- ITEM: variável que percorre o iterável- ITERÁVEL: qualquer objeto percorrível: lista, tupla, range, etc.Mais um exemplo:

quadrados = [n ** 2 for n in range(10)]
print(quadrados)

As possibilidades são infinitas. Você pode fazer muita coisa utilizando o loop com a Lista. Podemos também adicionar strings à Lista. Assim:

frutas = ['banana', 'maçã']
addicionar = 'Eu gosto de '

mais_frutas = [addicionar + item for item in frutas]

Transformando um Loop Clássico

A diferença entre os dois é mais do que a sintaxe. Em códigos que são longos e podem levar horas para percorrer, isso pode salvar muito tempo. Vamos ver?

%%timeit
cubos = []
for n in range(1_000_000):
    cubos.append(n ** 3)

Output:

59.9 ms ± 149 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Fazendo da maneira acima, 10 loops demorou 59.9 miliseconds. Agora vamos fazer o mesmo da outra forma e examinar os resultados:

%%timeit
cubos = [n ** 3 for n in range(1_000_000)]

Output:

57.5 ms ± 722 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

A segunda maneira, demorou 57.5 miliseconds. Mais rápido e mais elegante.

Filtrando Elementos

Você pode adicionar um if para satisfazer condições.

Por exemplo, vamos criar uma lista de números pares.

pares = [n for n in range(20) if n % 2 == 0] 
pares
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Condição if e else Dentro da Expressão

Se precisar gerar valores diferentes dependendo de uma condição, pode usar if/else antes do for.

rotulos = ['par' if n % 2 == 0 else 'ímpar' for n in range(10)]

Compreensões Aninhadas (flatten)

Para “achatar” listas de listas:

matrix = [[1, 2, 3], [4, 5, 6]]

achatar = [item for sub in matrix for item in sub]

Exercícios Rápidos

Primos <50 – crie uma lista de números primos menores que 50 usando list comprehension.Conversão °C→°F – dada uma lista de temperaturas em °C, devolva outra lista em Fahrenheit.Nomes longos – de nomes = ["Ana", "Bruno", "Carolina", "Davi"], extraia apenas os com 5+ letras.Poste suas soluções nos comentários.

Conclusão

Compreensões de lista deixam o código mais compacto, performático e, quando bem usadas, legível. O segredo é balancear clareza e concisão.Gostou do conteúdo? Compartilhe este artigo com quem está aprendendo Python e siga nosso canal no YouTube para ver o passo a passo em vídeo!