Quando começamos a programar em Python, uma das primeiras coisas que precisamos dominar são as estruturas de dados. Elas são as ferramentas que usamos para guardar e organizar informações dentro do nosso programa: uma lista de nomes, um cadastro de clientes, os itens de um carrinho de compras.
A boa notícia é que o Python já vem com estruturas prontas e muito poderosas. Vamos conhecer as quatro principais: listas, tuplas, dicionários e conjuntos.
Listas
A lista é provavelmente a estrutura mais usada. Ela guarda elementos em uma ordem definida e permite duplicados, alterações e acesso por índice.
frutas = ["banana", "maca", "uva"]
frutas.append("laranja") # adiciona no final
frutas.insert(1, "manga") # insere na posicao 1
frutas.remove("uva") # remove pelo valor
frutas[0] # primeiro elemento -> "banana"
frutas[-1] # ultimo elemento -> "laranja"
print(len(frutas)) # 3
Para percorrer uma lista, usamos um laço for:
for fruta in frutas:
print(fruta)
E para criar listas de forma rápida, existe o famoso list comprehension:
dobros = [numero * 2 for numero in range(10)]
print(dobros) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Tuplas
A tupla é parecida com a lista, mas é imutável: depois de criada, não dá para adicionar, remover ou alterar elementos. Essa característica é útil quando queremos garantir que um dado não mude, como coordenadas ou configurações fixas.
coordenadas = (-21.9, -49.6) # latitude e longitude
# coordenadas.append(0) # erro! tuplas nao aceitam alteracao
Uma "pegadinha" clássica é usar uma vírgula para criar uma tupla de um elemento:
sozinho = ("sp",) # tupla com 1 elemento
errado = ("sp") # string, nao uma tupla!
Tuplas também são usadas para "desempacotar" valores, o que torna o código bem elegante:
latitude, longitude = coordenadas
print(latitude) # -21.9
Dicionários
O dicionário guarda pares de chave e valor. É a estrutura ideal para representar coisas do mundo real, como um cadastro:
usuario = {
"nome": "Maria",
"idade": 28,
"linguagens": ["Python", "JavaScript"],
}
print(usuario["nome"]) # Maria
usuario["cidade"] = "São Marcos" # adiciona um novo campo
for chave, valor in usuario.items():
print(chave, "->", valor)
Para acessar um valor que talvez não exista, prefira o método get, que evita erros:
print(usuario.get("telefone")) # None (nao existe)
print(usuario.get("telefone", "nao informado")) # valor padrao
Conjuntos (sets)
O conjunto guarda elementos únicos e sem ordem definida. Ele é perfeito para eliminar duplicatas e fazer operações de comparação.
participantes_dia1 = {"Ana", "Pedro", "Lucas"}
participantes_dia2 = {"Lucas", "Julia", "Ana"}
unicos = participantes_dia1 | participantes_dia2 # uniao
ambos = participantes_dia1 & participantes_dia2 # intersecao
print(ambos) # {'Lucas', 'Ana'}
Eliminar duplicatas de uma lista nunca foi tão simples:
lista_com_repeticoes = [1, 2, 2, 3, 3, 3]
sem_duplicatas = list(set(lista_com_repeticoes))
print(sem_duplicatas) # [1, 2, 3]
Quando usar cada uma?
| Estrutura | Ordenada | Mutável | Aceita duplicados | Bom para |
|---|---|---|---|---|
| Lista | Sim | Sim | Sim | sequências que mudam |
| Tupla | Sim | Não | Sim | dados fixos e agrupados |
| Dicionário | Sim* | Sim | chaves não | buscar por nome/chave |
| Conjunto | Não | Sim | Não | elementos únicos e comparações |
*Desde o Python 3.7 os dicionários mantêm a ordem de inserção.
Dominar essas estruturas resolve a maioria dos problemas do dia a dia. O truque é pensar no dado que você precisa guardar e escolher a ferramenta certa. Nos próximos artigos vamos usar bastante essas estruturas em exemplos reais.
Tem alguma dúvida ou sugestão de tema? Deixe nos comentários ou contribua com um artigo no nosso repositório.