Problem: Como realizar atribuições condicionais de uma linha em Python?

Exemplo: Digamos que você começa com o seguinte código.

x = 2boo = True

Você quer definir o valor de x para 42 se boo é True, e não faça nada de diferente.

Vamos mergulhar nas diferentes formas de realizar isto em Python. Começamos com uma visão geral:

Exercício: Corre o código. São todas as saídas iguais?

Próximo, mergulhe em cada um desses métodos e aumente a sua superpotência de uma linha!

Tabela de conteúdos

Método 1: Operador ternário

O operador ternário mais básico x if c else y devolve a expressão x se a expressão booleana c avalia para True. Caso contrário, se a expressão c avalia para False, o operador ternário retorna a expressão alternativa y.

<OnTrue> if <Condition> else <OnFalse>
Operand Descrição
<Em Verdade> A expressão de retorno do operador no caso da condição avalia para True
<Condição> Condição que determina se deve devolver o ramo <Em Verdadeiro> ou o ramo <Em Falso>.
<OnFalse> A expressão de retorno do operador no caso da condição avaliar para False
Operandas do Operador Ternário

Vamos voltar ao nosso problema de exemplo! Você quer definir o valor de x para 42 se boo é True, e não faça nada de diferente. Aqui está como fazer isto numa única linha:

x = 42 if boo else x

Apesar de usar o operador ternário funcionar, você pode se perguntar se é possível evitar a parte ...else x para clareza do código? No próximo método, você vai aprender como!

Se precisar de melhorar a sua compreensão do operador ternário, veja o seguinte vídeo:

Pode também ler o artigo relacionado:

  • Python One Line Ternary

Método 2: Single-Line If Statement

Tal como no método anterior, você quer definir o valor de x para 42 se boo é True, e não faça nada de diferente. Mas você não quer ter um ramo redundante. Como fazer isso em Python?

A solução para saltar a outra parte do operador ternário é surpreendentemente simples – use um padrão if sem outro ramo e escreva-o em uma única linha de código:

if boo: x = 42

Para aprender mais sobre o que você pode empacotar em uma única linha, assista ao meu vídeo tutorial “If-Then-Else in One Line Python”:

Método 3: Ternary Tuple Syntax Hack

Python Ternary Tuple Syntax

Uma forma abreviada do operador ternário é a seguinte sintaxe de tuple.

Sintaxe: Você pode usar a sintaxe do tuple (x, y) consistindo de um tuple (x, y) e uma condição c encerrado em um colchete. Aqui está uma forma mais intuitiva de representar esta sintaxe de tuple.

(<OnFalse>, <OnTrue>)
Operand Descrição
<Em Verdade> A expressão de retorno do operador no caso da condição avalia para True
<Condição> Condição que determina se deve devolver o ramo <Em Verdadeiro> ou o ramo <Em Falso>.
<OnFalse> A expressão de retorno do operador no caso da condição avaliar para False
Sintaxe da Tuple do Operador Ternário

De facto, a ordem dos operandos <OnFalse> e <OnTrue> é simplesmente invertida quando comparada com a do operador ternário básico. Primeiro, você tem o ramo que é devolvido se a condição NÃO se mantém. Segundo, você tem o ramo que é retornado se a condição se mantiver.

x = (x, 42)

Clever! A condição boo mantém, então o valor de retorno passado para a variável x é a variável <OnTrue> ramo 42.

Não se preocupe se isto o confunde – você não está sozinho. Você pode esclarecer a sintaxe do tuple de uma vez por todas, estudando meu artigo detalhado no blog.

Artigo relacionado: Python Ternary – Tuple Syntax Hack

Python One-Liners Book

Programadores Python One-Liners irão melhorar suas habilidades de informática com estes úteis one-liners.

Python One-Liners

Python One-Liners irá ensiná-lo a ler e escrever “one-liners”: declarações concisas de funcionalidades úteis empacotadas em uma única linha de código. Você aprenderá como desempacotar e entender sistematicamente qualquer linha de código Python, e escrever de forma eloquente e poderosamente comprimida Python como um expert.

Os cinco capítulos do livro cobrem dicas e truques, expressões regulares, aprendizagem de máquinas, tópicos centrais de ciência de dados, e algoritmos úteis. Explicações detalhadas de uma linha introduzem conceitos-chave da ciência da computação e aumentam suas habilidades de codificação e análise. Você aprenderá sobre recursos avançados Python, como compreensão de listas, fatiamento, funções lambda, expressões regulares, mapeamento e redução de funções, e tarefas de fatiamento. Você também aprenderá como fazê-lo:

– Alavancar estruturas de dados para resolver problemas do mundo real, como usar a indexação booleana para encontrar cidades com poluição acima da média
– Usar o básico NumPy como array, forma, eixo, tipo, transmissão, indexação avançada, fatiamento, classificação, pesquisa, agregação e estatística
– Calcular estatísticas básicas de arrays de dados multidimensionais e os algoritmos K-Means para aprendizagem não supervisionada
– Criar expressões regulares mais avançadas usando agrupamento e grupos nomeados, cabeças de looka negativas, personagens fugidos, espaços em branco, conjuntos de caracteres (e conjuntos de caracteres negativos) e operadores gananciosos/não gananciosos
– Entenda uma ampla gama de tópicos de informática, incluindo anagramas, palíndromos, superconjuntos, permutações, factorials, números primos, números Fibonacci, ofuscação, busca e classificação algorítmica

No final do livro, você saberá como escrever Python no seu mais refinado, e criar concisas e belas peças de “arte Python” em apenas uma linha.

>

Pega o teu Python One-Liners Agora!!

Apesar de trabalhar como pesquisador em sistemas distribuídos, o Dr. Christian Mayer encontrou o seu amor pelo ensino de estudantes de informática.

Para ajudar os estudantes a atingir níveis mais elevados de sucesso em Python, ele fundou o site de educação em programação Finxter.com. Ele é autor do popular livro de programação Python One-Liners (NoStarch 2020), co-autor da série Coffee Break Python de livros auto-publicados, entusiasta da ciência da computação, freelancer, e proprietário de um dos 10 maiores blogs Python do mundo.

As suas paixões são escrever, ler e codificar. Mas sua maior paixão é servir aspirantes a codificadores através do Finxter e ajudá-los a aumentar suas habilidades. Você pode se juntar à sua academia de e-mail grátis aqui.

Deixe uma resposta

O seu endereço de email não será publicado.