Programador Leigo
Fundamentos 10 min leitura 01 MAR 2026

Python do Zero: listas, tuplas e dicionários

As três estruturas de dados que você vai usar em todo programa Python.


Por que aprender estruturas de dados?

Quando você programa, raramente trabalha com um único valor. Na maioria das vezes, precisa armazenar coleções de informações: uma lista de produtos, as coordenadas de um ponto, os dados de um usuário. Python oferece três estruturas fundamentais para isso: listas, tuplas e dicionários. Entender quando e como usar cada uma é essencial para escrever código limpo e eficiente.

Listas

Uma lista é uma coleção ordenada e mutável de elementos. Você cria uma lista usando colchetes [] e pode misturar tipos diferentes, embora o mais comum seja manter elementos do mesmo tipo.

Criação e acesso por índice

frutas = ["maça", "banana", "laranja", "uva", "manga"]

# Acessando pelo indice (comeca em 0)
print(frutas[0])   # maça
print(frutas[2])   # laranja
print(frutas[-1])  # manga (ultimo elemento)

Fatiamento (slicing)

O fatiamento permite extrair partes de uma lista usando a sintaxe lista[inicio:fim:passo]. O elemento na posição fim não é incluído.

numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numeros[2:5])    # [2, 3, 4]
print(numeros[:4])     # [0, 1, 2, 3]
print(numeros[6:])     # [6, 7, 8, 9]
print(numeros[::2])    # [0, 2, 4, 6, 8] - de dois em dois
print(numeros[::-1])   # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] - invertida

Métodos de lista

As listas possuem vários métodos embutidos que facilitam a manipulação dos dados.

cores = ["azul", "verde", "vermelho"]

# Adicionar elementos
cores.append("amarelo")          # adiciona no final
cores.insert(1, "roxo")          # insere na posicao 1
print(cores)  # ['azul', 'roxo', 'verde', 'vermelho', 'amarelo']

# Remover elementos
cores.remove("verde")            # remove pela valor
ultimo = cores.pop()             # remove e retorna o ultimo
print(ultimo)  # amarelo
print(cores)   # ['azul', 'roxo', 'vermelho']

# Ordenar e inverter
notas = [7.5, 9.0, 6.8, 8.2, 5.5]
notas.sort()                     # ordena em ordem crescente
print(notas)  # [5.5, 6.8, 7.5, 8.2, 9.0]

notas.reverse()                  # inverte a ordem
print(notas)  # [9.0, 8.2, 7.5, 6.8, 5.5]

Tuplas

Uma tupla é parecida com uma lista, mas com uma diferença crucial: ela é imutável. Depois de criada, você não pode adicionar, remover ou alterar seus elementos. Tuplas são criadas com parênteses ().

Quando usar tuplas?

Use tuplas quando os dados não devem mudar: coordenadas geográficas, configurações fixas, retorno de funções com múltiplos valores.

# Criando tuplas
coordenadas = (-23.5505, -46.6333)
dias_semana = ("segunda", "terca", "quarta", "quinta", "sexta")

# Acessando elementos (igual a lista)
print(coordenadas[0])   # -23.5505
print(dias_semana[1:3]) # ('terca', 'quarta')

# Desempacotamento de tupla
latitude, longitude = coordenadas
print(latitude)   # -23.5505
print(longitude)  # -46.6333

Se você tentar modificar uma tupla, o Python vai gerar um erro:

coordenadas = (-23.5505, -46.6333)
coordenadas[0] = 10  # TypeError: 'tuple' object does not support item assignment

Dicionários

Um dicionário armazena pares de chave-valor. É a estrutura ideal quando você precisa associar informações, como um nome a um telefone ou um produto a um preço. Dicionários são criados com chaves {}.

Criação e acesso

aluno = {
    "nome": "Carlos",
    "idade": 22,
    "curso": "Engenharia",
    "notas": [8.5, 7.0, 9.2]
}

# Acessando valores pela chave
print(aluno["nome"])    # Carlos
print(aluno["notas"])   # [8.5, 7.0, 9.2]

# Usando get (nao gera erro se a chave nao existir)
print(aluno.get("email"))              # None
print(aluno.get("email", "sem email")) # sem email

Métodos úteis

produto = {"nome": "Notebook", "preco": 3500.00, "estoque": 15}

# Obtendo chaves, valores e pares
print(list(produto.keys()))    # ['nome', 'preco', 'estoque']
print(list(produto.values()))  # ['Notebook', 3500.0, 15]
print(list(produto.items()))   # [('nome', 'Notebook'), ('preco', 3500.0), ('estoque', 15)]

# Adicionando e atualizando
produto["marca"] = "Dell"       # adiciona nova chave
produto["preco"] = 3299.90      # atualiza valor existente
print(produto)
# {'nome': 'Notebook', 'preco': 3299.9, 'estoque': 15, 'marca': 'Dell'}

# Removendo
del produto["estoque"]
print(produto)  # {'nome': 'Notebook', 'preco': 3299.9, 'marca': 'Dell'}

Iterando sobre cada estrutura

O laço for é a forma mais natural de percorrer coleções em Python.

# Iterando sobre lista
linguagens = ["Python", "JavaScript", "Go"]
for linguagem in linguagens:
    print(f"Eu estudo {linguagem}")

# Iterando sobre tupla
meses = ("janeiro", "fevereiro", "marco")
for i, mes in enumerate(meses):
    print(f"{i + 1} - {mes}")

# Iterando sobre dicionario
pessoa = {"nome": "Ana", "cidade": "Curitiba", "profissao": "Desenvolvedora"}

# Somente chaves
for chave in pessoa:
    print(chave)

# Chaves e valores juntos
for chave, valor in pessoa.items():
    print(f"{chave}: {valor}")

Quando usar cada uma?

Escolher a estrutura certa depende do problema que você está resolvendo:

  • Lista — quando você precisa de uma coleção ordenada que pode crescer e mudar ao longo do programa. Exemplos: lista de tarefas, histórico de compras, resultados de uma busca.
  • Tupla — quando os dados são fixos e não devem ser alterados. Exemplos: coordenadas, constantes de configuração, retorno de funções. Tuplas também são levemente mais rápidas que listas.
  • Dicionário — quando você precisa associar uma chave a um valor para buscas rápidas. Exemplos: cadastro de usuários, configurações de um sistema, contagem de palavras.

Exemplo prático: carrinho de compras

Vamos combinar as três estruturas em um exemplo real. Imagine um carrinho de compras simples para uma loja online.

# Cada produto e um dicionario
produto_1 = {"nome": "Camiseta", "preco": 59.90, "tamanho": "M"}
produto_2 = {"nome": "Tenis", "preco": 249.90, "tamanho": "42"}
produto_3 = {"nome": "Bone", "preco": 39.90, "tamanho": "unico"}

# O carrinho e uma lista de produtos
carrinho = [produto_1, produto_2, produto_3]

# Cupons validos sao uma tupla (nao mudam)
cupons_validos = ("DESC10", "FRETE", "PROMO20")

# Calculando o total
total = 0
print("=== Seu Carrinho ===")
for item in carrinho:
    print(f"  {item['nome']} - R$ {item['preco']:.2f}")
    total += item["preco"]

# Verificando cupom
cupom = "DESC10"
if cupom in cupons_validos:
    desconto = total * 0.10
    total -= desconto
    print(f"\nCupom {cupom} aplicado! Desconto: R$ {desconto:.2f}")

print(f"Total: R$ {total:.2f}")

A saída desse programa seria:

=== Seu Carrinho ===
  Camiseta - R$ 59.90
  Tenis - R$ 249.90
  Bone - R$ 39.90

Cupom DESC10 aplicado! Desconto: R$ 34.97
Total: R$ 314.73

Próximos passos

Agora que você domina listas, tuplas e dicionários, está pronto para explorar temas mais avançados como list comprehensions, sets e funções. Pratique criando pequenos projetos: uma agenda de contatos, um sistema de notas de alunos ou um conversor de moedas. A melhor forma de aprender é escrevendo código.

Continue lendo

Compartilhar