Listas e dicionários são as duas estruturas de dados que você usará em praticamente todo código Python para dados. Listas armazenam sequências ordenadas de valores; dicionários associam chaves a valores. Dominar ambos é pré-requisito para qualquer análise com Pandas.

Listas

vendas = [1200, 3400, 890, 5600, 2100]
nomes = ["Ana", "Bruno", "Carlos"]
misto = [1, "dois", 3.0, True]  # pode misturar tipos

# Acessando elementos (índice começa em 0):
print(vendas[0])   # 1200
print(vendas[-1])  # 2100 (último elemento)
print(vendas[1:3]) # [3400, 890] (slice: do índice 1 até antes do 3)

Métodos essenciais de lista

vendas.append(4500)       # adiciona ao final
vendas.insert(0, 999)     # insere na posição 0
vendas.remove(890)        # remove o primeiro 890
valor = vendas.pop()      # remove e retorna o último elemento
vendas.sort()             # ordena no lugar (crescente)
vendas.sort(reverse=True) # ordena decrescente
print(len(vendas))        # quantidade de elementos
print(sum(vendas))        # soma
print(max(vendas))        # maior valor
print(min(vendas))        # menor valor

Dicionários

cliente = {
    "nome": "Maria",
    "cidade": "São Paulo",
    "valor_compras": 12500.0,
    "ativo": True
}

# Acessando valores:
print(cliente["nome"])          # Maria
print(cliente.get("cpf", "N/A"))  # N/A (get não dá erro se a chave não existe)

# Modificando:
cliente["cidade"] = "Campinas"
cliente["novo_campo"] = "valor"  # adiciona nova chave

# Verificando existência:
if "cpf" in cliente:
    print("tem CPF")
else:
    print("sem CPF")

Iterando sobre dicionário

for chave, valor in cliente.items():
    print(f"{chave}: {valor}")

# Só as chaves:
for chave in cliente.keys():
    print(chave)

# Só os valores:
for valor in cliente.values():
    print(valor)

Lista de dicionários: dados tabulares em Python puro

pedidos = [
    {"id": 1, "produto": "Notebook", "valor": 4500},
    {"id": 2, "produto": "Monitor", "valor": 1200},
    {"id": 3, "produto": "Teclado", "valor": 350},
]

# Total de vendas:
total = sum(p["valor"] for p in pedidos)
print(f"Total: R$ {total:,.2f}")

# Filtrar apenas acima de R$ 1000:
caros = [p for p in pedidos if p["valor"] > 1000]

Uma lista de dicionários é exatamente o que um DataFrame do Pandas representa internamente.

Perguntas frequentes

Qual a diferença entre lista e tupla?

Tuplas (entre parênteses) são imutáveis — você não pode adicionar, remover ou modificar elementos depois de criadas. Use tuplas para dados que não devem mudar; listas para dados que precisam ser modificados.

Dicionários preservam a ordem de inserção?

Sim, a partir do Python 3.7. A ordem de inserção é garantida.