Pular para o conteúdo
</>RoByte

Buscar cursos e aulas

Aulas do curso

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

Código no GitHub

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().