Compreensão de listas em Python explicada com exemplos

List comprehensions fornecem uma maneira concisa de criar listas em Python. Elas são mais legíveis e frequentemente mais eficientes do que usar loops tradicionais. Este artigo explorará o que são list comprehensions, como elas funcionam e fornecerá exemplos para ilustrar seu uso.

O que é uma compreensão de lista?

Uma compreensão de lista é uma maneira compacta de processar todos ou parte dos elementos em uma coleção e retornar uma lista com os resultados. A sintaxe de uma compreensão de lista é:

[expression for item in iterable if condition]

Aqui, expression é o item atual na iteração, mas também é o resultado, que você pode manipular antes que ele termine como um item de lista. iterable é a coleção pela qual você está fazendo o loop, e condition é um filtro opcional que inclui apenas itens que satisfazem a condição.

Exemplos básicos

Criando uma lista de quadrados

Para criar uma lista de quadrados de números de 0 a 9, você pode usar uma compreensão de lista da seguinte maneira:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = [x ** 2 for x in numbers]
print(squares)

Saída:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Filtrando Itens

Você também pode adicionar uma condição para filtrar itens. Por exemplo, para obter apenas os números pares da lista:

even_squares = [x ** 2 for x in numbers if x % 2 == 0]
print(even_squares)

Saída:

[0, 4, 16, 36, 64]

Achatando uma lista de listas

Se você tem uma lista de listas e quer simplificá-la, você pode usar uma compreensão de lista:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for sublist in list_of_lists for item in sublist]
print(flattened)

Saída:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Exemplos avançados

Aplicando Funções

Você pode aplicar funções dentro de uma compreensão de lista. Por exemplo, para converter uma lista de strings para maiúsculas:

words = ['hello', 'world', 'python']
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

Saída:

['HELLO', 'WORLD', 'PYTHON']

Compreensões aninhadas

Compreensões de lista podem ser aninhadas. Por exemplo, para criar uma lista de tuplas (i, j) onde i e j são ambos elementos de duas listas:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
pairs = [(i, j) for i in list1 for j in list2]
print(pairs)

Saída:

[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

Conclusão

As compreensões de lista oferecem uma maneira poderosa e concisa de gerar listas em Python. Elas podem simplificar seu código e torná-lo mais legível, substituindo várias linhas de código de loop por uma única linha de compreensões. Pratique o uso de compreensões de lista para se sentir mais confortável com sua sintaxe e capacidades.