
Python é uma das linguagens de programação mais populares do mundo. Fácil de aprender, ler e entender, ela se tornou a porta de entrada ideal para quem está começando. Além disso, ela é muita usada em áreas como análise de dados e machine learning.
Portanto, se você pensa em trabalhar nesse mercado, precisa dominar essa linguagem, incluindo aquelas dicas de Python que fazem a diferença no dia a dia. Afinal, saber o básico não é o bastante para conseguir boas oportunidades de trabalho. O mercado anda cada vez mais competitivo.
Em tempos de cortes nas grandes empresas de tecnologia, o que diferencia um candidato não é só “fazer o código rodar”, mas mostrar eficiência e maturidade ao programar. Saber escrever código limpo, legível e fácil de depurar (ou debugar, como a gente costuma dizer) faz toda a diferença na prática.
Neste artigo, vou te ensinar 15 dicas de Python que mudaram a forma como escrevo código. São hacks simples e rápidos, mas que vão aumentar drasticamente a sua eficiência na hora de escrever código.
Vamos às dicas!
1. Use join()
para converter listas em strings de forma eficiente
Muitas vezes, você precisa converter os elementos de uma lista em uma única string. E a forma mais simples e elegante de fazer isso é através do método join. Ele serve tanto para agregar todos os valores de uma lista quanto para adicionar um separador entre cada elemento.
Funciona assim: você escolhe o separador (o que vai aparecer entre os elementos da lista) e usa o join()
para unir tudo em uma única string.
Veja este exemplo:
lista = ['a', 'b', 'c', 'd']
# Junta os elementos sem separador
string1 = "".join(lista)
print(string1) # Resultado: abcd
# Junta os elementos separados por vírgula e espaço
string2 = ", ".join(lista)
print(string2) # Resultado: a, b, c, d
Observe que o join()
não altera a lista original. Ele apenas cria uma nova string com os elementos unidos do jeito que você definir.

2. Quebre strings longas com barra invertida (\
)
Strings muito longas dificultam a legibilidade do código como um todo. Para resolver isso, você pode usar a barra invertida (\
) e quebrar a string em várias linhas, sem alterar o resultado. Essa prática simples melhora a estética do código e ainda facilita sua manutenção e compreensão.
Veja a diferença:
# String em uma única linha (difícil de ler)
string_longa = 'esssastringehmuitolongaeacabacomalegibilidadedomeucodigo'
# String quebrada em várias linhas (mais legível)
string_longa_sep = 'esssastringehmuitolonga' \
'eacabacomalegibilidade' \
'domeucodigo'
print(string_longa) # Resultado: esssastringehmuitolongaeacabacomalegibilidadedomeucodigo
print(string_longa_sep) # Mesmo resultado, mas mais legível
Entenda o que diz o código:
A \
diz ao Python: “essa linha ainda não terminou, continue lendo na próxima”.
Ou seja, o resultado desta dica de Python é uma única string, mesmo que esteja escrita em várias linhas no código.
3. Compare duas listas não ordenadas com Counter
Comparar duas listas não ordenadas pode ser uma tarefa complicada. O jeito tradicional seria ordenar ambas e só depois verificar elemento por elemento. Mas existe um caminho bem mais simples: usar o Counter
do módulo collections
.
O Counter essencialmente cria um dicionário que conta a frequência de cada elemento. A comparação entre dois Counters verifica se as listas têm os mesmos elementos e a mesma quantidade de cada um.
Veja como esta dica de Python facilita a operação:
from collections import Counter
# Listas com elementos em ordens e frequências diferentes
lista_1 = ['a', 'd', 'c', 'c', 'a', 'b'] # Dois 'a' e dois 'c'
lista_2 = ['a', 'b', 'c', 'd', 'a', 'b'] # Dois 'a' e dois 'b'
# Solução 1: Ordenando (funciona, mas é menos eficiente em listas grandes)
iguais_ordenadas = sorted(lista_1) == sorted(lista_2)
print("Por ordenação:", iguais_ordenadas)
# Solução 2: Usando Counter (mais claro e eficiente)
iguais_counter = Counter(lista_1) == Counter(lista_2)
print("Com Counter:", iguais_counter)
4. Converta duas listas em um dicionário com zip()
Muitas vezes, precisamos combinar dois conjuntos de dados relacionados, como uma lista de chaves e outra de valores, em uma estrutura de mapeamento mais eficiente, que facilite sua utilização posterior.
Os dicionários são muito utilizados para isso. Eles transformam listas de dados paralelos em um formato de busca rápida, ideal para criar lookups, tabelas de referência ou alimentar visualizações.
E o jeito mais prático de transformar essas listas em dicionário é usando a função zip, que combina elementos de mesma posição em pares.
Depois, você só precisa passar o resultado para a função dict()
e o Python cria o dicionário automaticamente.
Esse recurso é muito útil quando você precisa importar dados de fontes diferentes (por exemplo, nomes e notas de alunos, ou colunas de uma planilha) e juntá-los em pares organizados.
Vale lembrar que, se as listas tiverem tamanhos diferentes, o zip()
só considera até o tamanho da menor.
Veja este exemplo:
lista_chaves = ['a', 'b', 'c', 'd']
lista_valores = [1, 2, 3, 4]
# Une os elementos posição a posição
dicionario = dict(zip(lista_chaves, lista_valores))
print(dicionario)
# Resultado: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
Criar Dicionário a partir de Listas Separadas de Chaves e Valores
5. Limpe strings com strip()
Quando você trabalha com dados obtidos de técnicas como raspagem de dados (scraping), é comum encontrar strings sujas, ou seja, com espaços em branco, quebras de linha (\n
) ou tabulações (\t
).
Esses detalhes podem causar erros em comparações, buscas ou processos de ETL. Para resolver esse problema, podemos usar o método strip, que simplifica a limpeza desses dados.
Veja este exemplo:
dado_sujo = "\n\n \t Manchete do Site de Notícias N \t \n\n"
dado_limpo = dado_sujo.strip()
print(dado_limpo)
# Resultado: Manchete do Site de Notícias N
Vale lembrar que o .strip()
remove os caracteres especificados de ambos os lados (início e fim) da string.
Se quiser remover apenas do lado esquerdo, use lstrip()
. Mas, se o seu objetivo for remover apenas do lado direito, use rstrip()
.
6. Crie listas em uma linha com list comprehension
Na comunidade de programação, você vai ouvir bastante o termo “Pythônico”. Ele é muito utilizado para definir linhas de código bem características de Python.
Na prática, ele se refere a soluções que aproveitam bem os recursos da linguagem, deixando o código mais simples, direto e legível.
E algo muito Pythônico a se fazer é condensar várias linhas de código em apenas uma.
Um bom exemplo disso é a list comprehension, que permite criar listas em uma única linha, sem precisar de laços (for
)longos.
Com esta dica de Python, além de economizar espaço, você também torna seu código mais elegante e fácil de entender.
Veja este exemplo prático:
# Cria uma lista com números de 0 a 9
lista_completa = [i for i in range(10)]
print(lista_completa) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Cria uma lista apenas com números pares
lista_pares = [i for i in range(10) if i % 2 == 0]
print(lista_pares) # [0, 2, 4, 6, 8]
7. Itere múltiplas listas ao mesmo tempo com zip()
Em muitos projetos, você vai precisar percorrer duas ou mais listas ao mesmo tempo, por exemplo, correlacionando colunas ou juntando dados relacionados.
A questão é que a forma como você itera uma lista revela um pouco sobre sua experiência com Python. A maneira mais iniciante de fazer isso é utilizar índices manuais, como for i in range(len(lista))
, que deixa o código confuso.
Mas, se quiser fazer isso como um programador avançado, use novamente o método zip. Ele combina os elementos de mesma posição e os entrega em pares (ou tuplas) durante a iteração.
Veja este exemplo:
lista_frutas = ['banana', 'morango', 'kiwi', 'melancia']
lista_animais = ['zebra', 'girafa', 'macaco', 'elefante']
# Itera sobre as duas listas ao mesmo tempo
for fruta, animal in zip(lista_frutas, lista_animais):
print(fruta, "-", animal)
Saída:
banana - zebra
morango - girafa
kiwi - macaco
melancia - elefante
Entendendo Sequências em Python: Listas, Tuplas e Strings
8. Divida uma lista em partes menores
Às vezes, você precisa dividir uma lista grande em partes menores de mesmo tamanho. Esse processo é importante quando você quer processar dados em lotes (batches), enviar pacotes em uma API ou simplesmente organizar melhor as informações, por exemplo.
A forma mais prática de fazer isso em Python é usar list comprehension com fatiamento ([início:fim]
).
Veja este exemplo:
n_lista_menor = 2
lista_completa = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Divide a lista em blocos de 2 elementos
lista_separada = [lista_completa[i:i+n_lista_menor]
for i in range(0, len(lista_completa), n_lista_menor)]
print(lista_separada)
# Resultado: [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]
O que esse código faz?
range(0, len(lista_completa), n_lista_menor)
: gera os índices iniciais de cada pedaço (0, 2, 4, 6, 8);lista_completa[i:i+n_lista_menor]
: fatia a lista, pegando um pedaço de tamanho 2 a cada passo.
A list comprehension junta todos esses pedaços em uma nova lista de listas.
Compreensão de Listas em Python
9. Verifique o tipo de uma variável com isinstance()
A verificação de tipos também é muito comum na rotina do programador. Afinal, você precisa garantir que uma variável seja de um tipo específico antes de usá-la. Isso evita erros na execução, como tentar somar números com strings.
E a melhor forma de fazer essa verificação é usando a função isinstance. Ele recebe dois argumentos:
- A variável que você quer testar;
- O tipo (ou tupla de tipos).
O resultado é sempre um valor booleano (True
ou False
).
Veja este exemplo:
data_type_string = "sou uma string"
print(isinstance(data_type_string, str)) # True
print(isinstance(data_type_string, float)) # False
Além de funcionar com múltiplos tipos ao mesmo tempo, essa função é considerada melhor do que type() ==
, porque também considera herança de classes (importante em programação orientada a objetos).

Programação Orientada a Objetos: conceito e pilares
10. Use o método get do dicionário
Normalmente, os programadores iniciantes usam colchetes para acessar valores em um dicionário. O problema é que, se a chave não existir, o Python lança um KeyError e seu programa pode parar.
d = {'a': 1, 'b': 2}
print(d['a']) # 1
print(d['c']) # ❌ KeyError
Para evitar isso, programadores experientes usam o método dict.get()
, o qual retorna o valor da chave se ela existir. Caso contrário, ele devolve None
ou um valor padrão que você pode definir.
Veja este exemplo:
dict_exemplo = {'a': 0, 'b': 1, 'c': 2}
# Quando a chave existe
print(dict_exemplo.get('b')) # 1
# Quando a chave não existe (retorna None por padrão)
print(dict_exemplo.get('d')) # None
# Definindo um valor padrão
print(dict_exemplo.get('d', 'chave não encontrada'))
# Resultado: chave não encontrada
Entendendo os métodos em Python
11. Passe múltiplos argumentos com *args
Às vezes, você precisa criar funções que aceitam uma quantidade variável de argumentos, sem saber de antemão quantos valores o usuário vai passar.
Em Python, você pode fazer isso com o *args
. O asterisco (*
) transforma os argumentos em uma tupla, que você pode percorrer normalmente dentro da função.
Veja este exemplo:
def somar_todos_valores(*numeros):
total = 0
for numero in numeros:
total += numero
return total
print(somar_todos_valores(1, 5, 10, 15)) # 31
print(somar_todos_valores(2, 4)) # 6
O que diz esse código?
*numeros
captura todos os valores passados para a função e os armazena em uma tupla;- Você pode passar quantos argumentos quiser: 2, 5, 10… Não importa.
Os Argumentos de uma Função em Python
12. Aplique uma função em todos elementos de uma lista com map()
Muitas vezes, você precisa rodar a mesma função em cada item de uma lista, seja para validar dados, transformar valores ou aplicar regras.
Em vez de usar um for
tradicional, você pode usar o map()
. Ele aplica a função a todos os elementos da sequência e retorna um objeto iterável, que pode ser convertido em lista.
Na prática, o map()
pega cada item da lista, aplica a função is_value_string()
e devolve o resultado. É como escrever um for
interno, mas de forma mais concisa.
Veja este exemplo:
# Função que verifica se o valor é uma string
def is_value_string(value):
return isinstance(value, str)
lista_para_map = [0, 'a', 2, 'c', 'd']
# Aplica a função em todos os itens da lista
lista_map = list(map(is_value_string, lista_para_map))
print(lista_map)
# Resultado: [False, True, False, True, True]
Map em Python: Um Guia Completo para Iniciantes
13. Insira valores em textos com f-strings
Existem várias formas de incluir valores em strings. Antigamente, isso era feito com concatenação (+
) ou com o método .format()
, mas essas formas deixam o código mais difícil de ler e manter.
Hoje, a forma mais prática e recomendada de fazer isso é usando as f-strings, que tornam o código mais curto, claro e legível.
Esta é mais uma ferramenta dos profissionais.
Veja este exemplo:
meu_nome = "Adriano"
# Forma antiga: concatenação (evite)
print("Meu nome é " + meu_nome)
# Forma antiga: format (funciona, mas é menos clara)
print("Meu nome é {}".format(meu_nome))
# Forma moderna: f-string (recomendada)
print(f"Meu nome é {meu_nome}")
Métodos de String em Python
14. Calcule o tempo de execução do código
Um bom programador não se preocupa apenas com a estética e usabilidade do código, mas também com o desempenho.
Quanto menor o tempo de execução, melhor. Afinal, você poupa tempo, diminui a necessidade computacional e é capaz de produzir mais com menos. Para isso, você precisa medir o tempo de execução de um trecho de código ou do código completo.
A forma mais simples de fazer isso em Python é com a função time()
do módulo time, que retorna o horário atual em segundos. A diferença entre o tempo inicial e final indica quanto tempo o código levou para rodar.
Veja este exemplo:
from time import time
# Marca o início
inicio = time()
# Função de exemplo: cálculo de fatorial
def fatorial(numero):
total = 1
for i in range(1, numero + 1):
total *= i
return total
print(fatorial(6))
# Marca o fim
final = time()
# Calcula a diferença
print(f"O tempo total em segundos foi {final - inicio}")

Como ser programador: 3 dicas que mudaram minha carreira
15. Trate exceções com try/except
As famosas Exceptions (exceções) são muito conhecidas por todos os programadores de Python. Elas ocorrem quando há algum erro de execução, como tentar dividir por zero ou usar o tipo errado em uma operação.
Além de prevenir esses erros, um bom programador sabe tratá-los para que o programa não quebre de forma inesperada.
Para isso, você pode usar o bloco try/except
. Ele permite que você “tente” (try) executar um código perigoso e “capture” (except) erros específicos que possam ocorrer, tratando cada um da maneira apropriada.
Veja este exemplo:
def divide_valor(a, b):
try:
print(a / b) # Tentativa de divisão
except ZeroDivisionError: # Tratamento de um erro específico
print("Impossível dividir por zero.")
except Exception as e: # Tratamento genérico para outros erros
print(f"Erro inesperado: {e}")
divide_valor(2, 1) # 2.0
divide_valor(2, 0) # Impossível dividir por zero.
divide_valor(2, 'a') # Erro inesperado: unsupported operand type(s)...
Vá além das dicas de Python: pratique!
Aplicando todas essas dicas de Python corretamente, você demonstra que está preocupado em desenvolver códigos mais eficientes, limpos e legíveis. E isso já é uma grande conquista para ser um bom programador.
Mas ainda não é o suficiente. A verdadeira evolução vem com a prática constante.
Por isso, minha última dica é: faça o curso gratuito Python para Iniciantes, da Asimov Academy.
Nele, você vai conhecer todos os conceitos mais importantes de programação Python, desde tipos de dados (string, int, float, e lista) e comparações com valores booleanos, até ações repetidas com for loops.
Também vai colocar toda a teoria na prática, criando um aplicativo web com Streamlit e Pandas. Tudo isso de um jeito simples e prático, perfeito até mesmo para quem quer sair do zero em Python!
Inscreva-se agora mesmo e melhore suas habilidades em programação!

Seu primeiro projeto Python – curso grátis com certificado!
Vá do zero ao primeiro projeto em apenas 2 horas com o curso Python para Iniciantes.
Comece agora
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários
30xp