Comprehensions em Python

python
0 – Python
6 – Funcional
6.1 – Funcoes puras
6.2 – Imutabilidade (tuplas, frozenset, namedtuple)
6.3 – Funcoes de alta ordem (map, filter, reduce)
6.4 – Comprehensions (list, dict, set)
6.5 – Geradores (yield, generator expressions)
6.6 – Decorators (@)
6.7 – Closures
6.8 – Funcoes lambda
LEGENDA
Nivel_1
Nivel_2
Nivel_3

Comprehensions são sintaxes concisas para criar coleções em Python. Elas substituem loops tradicionais por expressões declarativas. Primeiramente, list comprehension é a mais comum entre elas. Por exemplo, [x*2 for x in range(5)] gera [0,2,4,6,8]. Além disso, dict comprehension e set comprehension também existem. Assim, você escreve menos código e com mais clareza. Consequentemente, a manutenção se torna muito mais fácil. Quando utilizar comprehensions? Em transformações simples de coleções. Também para filtrar e mapear dados de forma legível. Por outro lado, para lógica muito complexa, loops são melhores. Elas são mais rápidas e pythonicas que loops manuais. Então, vamos explorar cada tipo com exemplos práticos. Três subtítulos guiarão você pelas comprehensions. Portanto, ao final, você escreverá código mais limpo e eficiente.

List comprehension: gerando listas de forma concisa

List comprehension cria uma nova lista a partir de um iterável. A sintaxe básica é [expressão for item in iterável]. Você pode adicionar condicionais com if no final. Quando usar list comprehension? Para mapeamentos e filtros simples. Elas são mais rápidas que loops for tradicionais. Além disso, você pode aninhar múltiplos for e if. Exemplo de list comprehension:

List comprehensions são rápidas e expressivas. Use-as sempre que possível para código mais limpo. Portanto, prefira comprehension a loops simples.

Dict comprehension: criando dicionários dinâmicos

Dict comprehension cria dicionários com sintaxe semelhante. A forma é {chave: valor for item in iterável}. Você também pode adicionar condicionais e múltiplos for. Quando usar dict comprehension? Em transformações chave-valor. Por exemplo, inverter dicionários ou criar mapeamentos. Além disso, você pode combinar duas listas facilmente. Exemplo de dict comprehension:

Dict comprehension é ideal para transformar listas em dicionários. Ela torna o código mais legível que loops com dict.update(). Assim, você evita código verboso e repetitivo.

Set comprehension: conjuntos únicos e eficientes

Set comprehension cria conjuntos (sets) com elementos únicos. A sintaxe é {expressão for item in iterável}. Ela remove duplicatas automaticamente por definição. Quando usar set comprehension? Em operações com elementos únicos. Por exemplo, extrair valores distintos de uma lista. Além disso, set comprehension é muito eficiente em performance. Exemplo de set comprehension:

Set comprehension é eficiente e elimina duplicatas. A fórmula geral das comprehensions é clara: \(C = [f(x) \text{ for } x \text{ in } S \text{ if } p(x)]\) Comprehensions são mais pythonicas que loops tradicionais. Elas são mais rápidas, mais curtas e mais legíveis. Use list comprehension para transformar sequências. Use dict comprehension para mapeamentos chave-valor. Use set comprehension para conjuntos únicos. Portanto, seu código será mais expressivo e profissional. Finalmente, pratique comprehensions em todos os seus projetos.

Funções de Alta Ordem

python
0 – Python
6 – Funcional
6.1 – Funcoes puras
6.2 – Imutabilidade (tuplas, frozenset, namedtuple)
6.3 – Funcoes de alta ordem (map, filter, reduce)
6.4 – Comprehensions (list, dict, set)
6.5 – Geradores (yield, generator expressions)
6.6 – Decorators (@)
6.7 – Closures
6.8 – Funcoes lambda
LEGENDA
Nivel_1
Nivel_2
Nivel_3

Funções de alta ordem recebem outras funções como argumentos. Elas transformam dados de forma declarativa e elegante. Primeiramente, map aplica uma função a cada elemento. Por exemplo, map(lambda x: x*2, [1,2,3]) dobra os valores. Além disso, filter seleciona elementos que atendem a uma condição. Assim, você evita loops manuais e código repetitivo. Consequentemente, o programa fica mais legível e conciso. Quando utilizar essas funções? Em transformações de coleções. Também em pipelines de processamento de dados. Por outro lado, para lógica muito complexa, loops são melhores. Python suporta essas funções de forma nativa. Então, vamos explorar cada uma com exemplos práticos. Três subtítulos guiarão você por essas funções essenciais. Portanto, ao final, você substituirá loops verbosos por código funcional.

Map: transformando cada elemento

map aplica uma função a todos os itens de um iterável. O resultado é um iterador com os valores transformados. Quando usar map? Em conversões e mapeamentos simples. Por exemplo, converter strings para números ou aplicar fórmulas. Além disso, map aceita múltiplos iteráveis simultaneamente. Exemplo de map:

Map é ideal para transformações uniformes em sequências. Ele é mais expressivo que loops tradicionais. Portanto, prefira map para operações simples de mapeamento.

Filter: selecionando elementos

filter retorna apenas elementos que satisfazem uma condição. A função de filtro deve retornar True ou False. Quando usar filter? Em operações de seleção e limpeza. Por exemplo, remover valores nulos ou selecionar maiores que um limite. Assim, você elimina condicionais espalhadas pelo código. Exemplo de filter:

Filter é perfeito para limpeza e seleção de dados. Ele torna o código mais legível que condicionais aninhadas. Portanto, use filter para extrair subconjuntos de dados.

Reduce: reduzindo a um único valor

reduce aplica uma função cumulativamente aos elementos. O resultado é um único valor agregado da sequência. Quando usar reduce? Em operações de acumulação. Por exemplo, soma, produto, máximo, mínimo ou concatenação. Além disso, reduce permite agregadores personalizados complexos. Exemplo de reduce:

Reduce é poderoso para agregações personalizadas. A fórmula do padrão map-filter-reduce é clara: \(R = \text{reduce}(\text{função}, \text{map}(\text{f}, \text{filter}(\text{pred}, \text{dados})))\) Combine map, filter e reduce para pipelines expressivos. Eles tornam seu código mais declarativo e menos propenso a erros. Map transforma, filter seleciona, reduce agrega. Portanto, use essas funções para processar coleções de forma elegante. Finalmente, pratique com exemplos reais do seu dia a dia.