Vídeo em breve
Por enquanto, esta aula está disponível só em texto — o vídeo entra assim que ficar pronto.
Listas e dicionários
Mais métodos de listas
sort, reverse, pop, extend, count, index e a diferença entre ordenar no lugar e criar uma lista nova. · 12 min
Na aula anterior você viu .append(), .insert() e .remove(). Listas
têm vários outros métodos úteis — esta aula cobre os que você vai usar com
mais frequência no dia a dia.
Ordenando: .sort() vs sorted()
numeros = [5, 2, 8, 1, 9]
numeros.sort() # ordena a própria lista (no lugar), devolve None
print(numeros) # [1, 2, 5, 8, 9]
numeros.sort(reverse=True) # decrescente
print(numeros) # [9, 8, 5, 2, 1]
nomes = ["Carlos", "Ana", "Bruno"]
nomes_ordenados = sorted(nomes) # cria uma lista NOVA, ordenada
print(nomes) # ["Carlos", "Ana", "Bruno"] (a original não muda)
print(nomes_ordenados) # ["Ana", "Bruno", "Carlos"]
Atenção
.sort() modifica a lista original e devolve None — um erro clássico é
escrever lista = lista.sort(), o que apaga a lista transformando-a em
None. Use .sort() sozinho numa linha, ou sorted(lista) se quiser
guardar o resultado numa variável nova.
Removendo itens: .pop() vs .remove()
pilha = [10, 20, 30]
ultimo = pilha.pop() # remove e devolve o último item: 30
print(pilha) # [10, 20]
primeiro = pilha.pop(0) # remove e devolve o item no índice 0: 10
print(pilha) # [20]
letras = ["a", "b", "c", "b"]
letras.remove("b") # remove a PRIMEIRA ocorrência de "b", não devolve nada
print(letras) # ["a", "c", "b"]
Dica
Use .pop() quando você quer o valor removido de volta (ex.: processar
itens de uma fila). Use .remove() quando você só quer tirar um valor
específico da lista e não precisa dele depois.
Juntando listas: .extend() vs +
frutas = ["maçã", "banana"]
mais_frutas = ["laranja", "uva"]
frutas.extend(mais_frutas) # modifica frutas no lugar
print(frutas) # ["maçã", "banana", "laranja", "uva"]
combinada = [1, 2] + [3, 4] # cria uma lista NOVA
print(combinada) # [1, 2, 3, 4]
Outros métodos úteis
numeros = [3, 7, 3, 9, 3]
print(numeros.count(3)) # 3 (quantas vezes o valor 3 aparece)
print(numeros.index(9)) # 3 (índice da primeira ocorrência de 9)
print(3 in numeros) # True (checa se o valor existe na lista)
copia = numeros.copy() # cópia independente da lista
numeros.clear() # esvazia a lista original: []
print(copia) # [3, 7, 3, 9, 3] (a cópia não foi afetada)
Dica
copia = numeros não cria uma cópia — cria um segundo nome para a
mesma lista na memória. Mudar uma muda a outra. Para copiar de verdade,
use .copy() (ou lista[:]).
Exercícios
Exercício
1. Aquecimento. Dada precos = [29.9, 15.5, 42.0, 8.75], use .sort()
para ordenar do menor para o maior, e imprima o resultado.
Exercício
2. Fila de atendimento. Simule uma fila: crie uma lista com 5 nomes,
use um while que continua enquanto a lista não estiver vazia,
removendo e imprimindo "Atendendo: {nome}" com .pop(0) a cada volta.
Exercício
3. Desafio. Dada uma lista de números com repetições, ex.:
[4, 2, 4, 7, 2, 9, 4], crie uma lista nova só com os valores únicos,
ordenada, sem usar set() (veremos essa estrutura na próxima aula) — use
.count() e .index(), ou construa uma lista vazia e verifique com
in antes de cada .append().