Ternary operator, List Comprehension e Dict Comprehension para Data Science

Dominando atalhos em Python

Bernardo Lago
Let’s Data
4 min readJan 4, 2024

--

Fonte: DALL•E 3

Introdução

Python, com sua simplicidade e versatilidade, tornou-se uma potência no campo da ciência de dados por vários motivos. Entre eles está a grande quantidade de pacotes disponíveis e a facilidade de leitura e compreensão de código, em comparação com outras linguagens mais complexas como C# e JavaScript. Como cientistas de dados, escrever código limpo, conciso e legível é fundamental, e o Python oferece um conjunto de construções para alcançar exatamente isso. Neste artigo, exploraremos três atalhos essenciais do Python: Ternary operators (operadores ternários, List Comprehension (compreensões de lista) e Dict Comprehension (ou dictionary comprehension, compreensões de dicionário). Vamos nos aprofundar em sua sintaxe, casos de uso, vantagens e considerações ao usá-los.

Ternary Operator

Antes de falar de list e dict comprehension, precisamos falar de ternary operators. Esta sintaxe pythônica é a base para o que vem a seguir em list e dict comprehensions, é onde a sintaxe se origina.

O ternary operator fornece uma maneira concisa de escrever expressões condicionais em uma única linha:

resultado = expressão_se_verdadeiro if condição else expressão_se_falso

Considere o seguinte exemplo:

x = 5
paridade = "par" if x % 2 == 0 else "ímpar"
# O valor de paridade será "ímpar" pois 5 é um número ímpar

Neste exemplo, a variável paridade recebe o valor "par" se x for par e "ímpar" caso contrário. O operador % representa o módulo, assim o código realiza a divisão e o output desta operação é o resto da divisão. Se o resto for 0, quer dizer que é par, se for 1 (neste caso, no código não é preciso especificar porque é a única opção possível), o número é ímpar.

Vantagens

  1. Conciso e Legível: Expressa lógica condicional em uma única linha, melhorando a legibilidade do código.
  2. Simplicidade: Simplifica a sintaxe para atribuições condicionais simples.
  3. Código Expressivo: Demonstra ações de maneira clara e concisa.

Quando Exercer Cautela

Embora essas construções ofereçam vantagens, há situações em que a cautela é necessária:

  1. Preocupações com a Legibilidade: O uso excessivo de comprehensions em expressões complexas pode reduzir a legibilidade.
  2. Lógica Complexa: Se a lógica se tornar muito intrincada e longa, considere o uso de construções tradicionais para clareza.
  3. Implicações de Desempenho: Comprehensions extremamente grandes podem impactar o desempenho; use loops tradicionais para eficiência.
  4. Compreensões Aninhadas: Aninhar compreensões muito profundamente pode resultar em código de difícil compreensão.
  5. Operador Ternário em Condições Complexas: Para condições complexas, prefira instruções if-else tradicionais para clareza.
  6. Manutenibilidade: Priorize a manutenção do código; se as construções prejudicarem a compreensão, escolha alternativas explícitas.

List Comprehensions

List comprehensions oferecem uma maneira concisa de criar listas em Python. A sintaxe é direta:

[expressão for item in iterável if condição]
  • expressão: O valor a ser incluído na lista.
  • item: A variável que representa cada elemento no iterável (por exemplo, uma lista, tupla ou intervalo).
  • iterável: A fonte dos elementos.
  • condição (opcional): Filtra elementos com base na condição especificada.

Vamos ilustrar com um exemplo:

# Quadrados dos números de 0 a 9
quadrados = [x**2 for x in range(10)]
# Saída: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Casos de Uso

  1. Filtragem e Transformação: Compreensões de lista são úteis para filtrar elementos ou transformá-los de alguma forma.
  2. Inicialização: Use compreensões ao inicializar listas ou dicionários com uma sintaxe concisa e legível.
  3. Operações Matemáticas: Quando você precisa realizar operações matemáticas nos elementos de um iterável e criar uma nova lista ou dicionário.
  4. Lógica Condicional: Aplique compreensões ao criar uma nova coleção com base em determinadas condições.

Um exemplo demonstrando lógica condicional:

# Obtenha os quadrados pares de 0 a 9
quadrados_pares = [x**2 for x in range(10) if x % 2 == 0]
# Saída: [0, 4, 16, 36, 64]

List comprehensions podem melhorar a legibilidade do código, reduzindo o número de linhas necessárias para várias operações.

Dict Comprehension

Dict comprehensions oferecem uma maneira concisa de criar dicionários em Python. A sintaxe é semelhante às list comprehensions. A grande diferença é que o resultado não é uma lista, mais sim um dicionário com a estrutura chave: valor.

{expressão_chave: expressão_valor for item in iterável if condição}
  • expressão_chave: A expressão para a chave do dicionário.
  • expressão_valor: A expressão para o valor correspondente.
  • item, iterável e condição têm os mesmos significados que em list comprehensions.

Vamos usar um exemplo simples e criar um dicionário de quadrados de 0 a 9:

# Quadrados dos números de 0 a 9 como pares chave-valor
quadrados_dict = {x: x**2 for x in range(10)}
# Saída: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

Casos de Uso

  • Filtragem e Transformação: Assim como as compreensões de lista, as compreensões de dicionário se destacam na filtragem e transformação de dados.
  • Inicialização: Inicialize eficientemente dicionários, especificando relações chave-valor de forma concisa.
  • Transformação de Dados: Transforme dados de um dicionário em outro com facilidade.

Dict comprehensions oferecem um conjunto poderoso de ferramentas para trabalhar com pares chave-valor.

Conclusão

Ternary operators, list comprehensions e dict comprehensions são ferramentas poderosas no arsenal de um cientista de dados. Quando usados com discernimento, eles podem significativamente melhorar a legibilidade e concisão do código. No entanto, é crucial encontrar um equilíbrio e considerar fatores como complexidade, manutenibilidade e legibilidade. Ao dominar esses atalhos do Python, estudantes de ciência de dados podem elevar suas habilidades de codificação, tornando seu código mais expressivo e eficiente no cenário da ciência de dados.

Nos ajude a te ajudar!

Se você gostou deste artigo e quer apoiar o Let’s Data, dê uns claps! E você pode fazer isso mais de uma vez, que tal uns 15?

Deixe um comentário dizendo o que acha deste assunto!

--

--

Bernardo Lago
Let’s Data

Data Scientist at NielsenIQ. Cofounder at Let’s Data