Truques de Python
Python é uma linguagem muito popular por ser versátil e com sintaxe simples. Ela também é cheia de truques que poucos conhecem, mas que podem acelerar nossos códigos. Portanto, neste post, nosso foco será em alguns truques de Python. Vamos a eles.
Três pontos como placeholder
Já precisou definir uma função e usar pass como placeholder para completá-la depois?
def minha_func():
pass
Poucas pessoas sabem é que o uso de três pontos também funciona como um placeholder. Veja abaixo:
def minha_func():
...
Descompacção com asterisco
Descompactação se refere ao processo de atribuir valores a múltiplas variáveis simultaneamente. Por exemplo, ao invés de escrever assim:
a = 1
b = [2, 3, 4]
c = 5
Podemos escrever desta forma:
a, b, c = 1, [2, 3, 4], 5
Mas, o truque de Python que poucos sabem é que, quando precisamos descompactar variáveis que envolvem listas, podemos usar asterisco. Essa é uma maneira conveniente de extrair elementos específicos de uma sequência ou atribuir várias variáveis de uma única sequência. O asterisco mapeia todos os valores sem atribuição direta para uma única variável. Veja no exemplo abaixo:
a, *b, c = [1, 2, 3, 4, 5]
print("a:", a, "b:", b, "c:", c)
# a: 1 b: [2, 3, 4] c: 5
Nesse caso, a variável a recebeu o primeiro valor e c recebeu o último. Já b, posicionado no meio, recebeu os demais valores intermediários devido à presença do asterisco junto a ele. Se mudarmos a ordem de b, as atribuições mudam também:
*b, a, c = [1, 2, 3, 4, 5]
print("b:", b, "a:", a, "c:", c)
# b: [1, 2, 3] a: 4 c: 5
Encadeamento de operadores de comparação
Esse é um truque de Python fácil, mas nem todos conhecem. Se você precisa fazer múltiplas comparações, elas podem ser encadeadas. Por exemplo, se precisamos verificar se uma variável c é maior do que um valor a e menor do que b, ao invés de fazer comparações em sequência ou usar o operador and:
a = 5
b = 10
c = 7
if c > a and c < b:
print('c maior do que a e menor do que b')
# resultado: c maior do que a e menor do que b
Podemos encadear as comparações como mostrado abaixo:
if a < c < b:
print('c maior do que a e menor do que b')
# resultado: c maior do que a e menor do que b
Combinação de listas
Precisa combinar listas? Use o comando extend(). Veja abaixo como ele combina listas rápida e concisamente.
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
a.extend(b)
print(a)
# [1, 2, 3, 4, 5, 6, 7, 8]
Combinação de dicionários
Já para combinar dicionários, o truque de Python é um pouco diferente. Podemos combinar dicionários usando chaves e asteriscos, como mostrado abaixo:
x = {
"a": 1,
"b": 2,
"c": 3,
}
y = {
"d": 4,
"e": 5
}
z = {**x, **y}
print(z)
# resultado: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
Neste exemplo, o dicionário z foi formado através da combinação dos dicionários x e y.
Reversão de listas e strings
Precisa reorganizar uma lista ao contrário? Ao invés de usar um loop, isso pode ser facilmente resolvido usando “::-1” como índice. Não entendeu? Veja um exemplo:
minha_lista = [1, 2, 3, 4, 5]
minha_lista_invertida = minha_lista[::-1]
print(minha_lista_invertida)
# resultado: [5, 4, 3, 2, 1]
Em Python, strings são iteráveis. Portanto, podemos inverter uma string exatamente como fizemos acima com uma lista. Veja abaixo:
minha_string = "abracadabra"
print(minha_string[::-1])
# resultado: arbadacarba
Transforme uma lista de listas em uma única lista
Existem várias situações em que precisamos combinar uma lista de listas em uma única lista. O módulo itertools tem uma ferramenta ideal para esses casos: itertools.chain(). A seguir, mostramos um código ilustrativo de como usá-lo:
from itertools import chain
minha_lista_de_listas = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
minha_nova_lista = list(chain(*minha_lista_de_listas))
print(minha_nova_lista)
# resultado: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Use um passo para obter elementos específicos de uma lista
Suponha que você precise extrair apenas os itens em posições pares de uma lista. Ao invés de usar um loop, use como índice “::passo” onde passo é o intervalo que deseja. Vamos aos exemplos:
minha_lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(minha_lista[::2]) # retorna valores com intervalo de 2
# resultado: [1, 3, 5, 7, 9]
print(minha_lista[::5]) # retorna valores com intervalo de 5
# resultado: [1, 6]
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Módulo textwrap para formatação de textos
Manipulação de arquivos com Python
os.environ: gerenciamento de variáveis de ambiente com Python
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.