A lista é a estrutura de dados que você mais vai usar em Python. Ela guarda vários itens em ordem, aceita tipos misturados e cresce ou encolhe conforme o programa roda. Saber criar, acessar, fatiar, adicionar, remover e percorrer uma lista resolve boa parte das tarefas do dia a dia, de somar notas a filtrar nomes. Este guia mostra tudo isso com código que roda e aponta os erros que mais pegam quem está começando. Para estudar com playground no navegador, exercícios e certificado, use o curso de Python do zero, gratuito.
Resposta rápida
- Crie com colchetes:
frutas = ["maçã", "uva"]. - Acesse por índice a partir do zero;
frutas[-1]é o último item. - Cresça com
append,inserteextend; encolha comremove,popedel. nova = antiganão copia; useantiga.copy()para uma lista independente.
Como criar uma lista
Uma lista nasce entre colchetes, com os itens separados por vírgula. Ela pode começar vazia e receber itens depois, ou já vir preenchida. Os itens não precisam ser do mesmo tipo, embora listas de um tipo só sejam as mais comuns.
frutas = ["maçã", "uva", "pera"]
numeros = [10, 20, 30, 40]
vazia = []
misturada = ["texto", 42, True, 3.14]
print(frutas) # ['maçã', 'uva', 'pera']
print(len(numeros)) # 4A função len devolve quantos itens a lista tem. Ela serve de base para muita coisa: saber se a lista está vazia, montar laços e evitar pedir um índice que não existe.
Acessar por índice, inclusive negativo
Cada item tem uma posição, chamada índice, que começa em zero. Para pegar um item, use o índice entre colchetes. Índice negativo conta de trás para frente, o que evita calcular o tamanho só para chegar ao final.
frutas = ["maçã", "uva", "pera", "kiwi"]
print(frutas[0]) # maçã (primeiro)
print(frutas[2]) # pera
print(frutas[-1]) # kiwi (último)
print(frutas[-2]) # pera (penúltimo)
frutas[1] = "banana" # troca o item na posição 1
print(frutas) # ['maçã', 'banana', 'pera', 'kiwi']Como a lista é mutável, você também usa o índice para trocar um item no lugar, sem criar uma lista nova. Pedir um índice que não existe, como frutas[10] numa lista de quatro itens, para o programa com o erro IndexError.
Fatiamento (slicing): pegar um pedaço
O fatiamento recorta um trecho da lista com a sintaxe lista[inicio:fim]. O item do início entra, o do fim não. Se você omitir um dos lados, o Python assume o começo ou o final. Um terceiro número define o passo.
n = [0, 1, 2, 3, 4, 5]
print(n[1:4]) # [1, 2, 3] (do 1 até antes do 4)
print(n[:3]) # [0, 1, 2] (do começo)
print(n[3:]) # [3, 4, 5] (até o fim)
print(n[::2]) # [0, 2, 4] (de dois em dois)
print(n[::-1]) # [5, 4, 3, 2, 1, 0] (invertida)O fatiamento sempre devolve uma lista nova, sem mexer na original. Por isso n[:] é um jeito rápido de copiar a lista inteira, e n[::-1] devolve uma versão invertida sem alterar a de origem.
Adicionar itens: append, insert e extend
Existem três formas principais de crescer uma lista, cada uma para uma situação. Escolha pelo resultado que você quer.
fila = ["ana", "bia"]
fila.append("caio") # adiciona ao fim
print(fila) # ['ana', 'bia', 'caio']
fila.insert(0, "duda") # insere na posição 0
print(fila) # ['duda', 'ana', 'bia', 'caio']
fila.extend(["edu", "fê"]) # junta item por item
print(fila) # ['duda', 'ana', 'bia', 'caio', 'edu', 'fê']Cuidado com a diferença entre append e extend. Se você fizer fila.append(["edu", "fê"]), a lista inteira entra como um único item, criando uma lista dentro da lista. O extend desmonta a sequência e adiciona cada item separado.
Remover itens: remove, pop e del
Para encolher a lista você tem três ferramentas. O remove apaga pelo valor, o pop apaga pela posição e ainda devolve o item retirado, e o del apaga por índice sem devolver nada.
cores = ["azul", "verde", "rosa", "verde"]
cores.remove("verde") # apaga a PRIMEIRA ocorrência
print(cores) # ['azul', 'rosa', 'verde']
ultima = cores.pop() # tira e devolve o último
print(ultima) # verde
print(cores) # ['azul', 'rosa']
del cores[0] # apaga por índice
print(cores) # ['rosa']Repare que remove apaga só a primeira ocorrência do valor. Se o item aparece mais de uma vez e você quer todos fora, precisa repetir ou usar outra técnica. Chamar remove com um valor que não existe gera ValueError.
Percorrer com for e verificar pertencimento com in
Para trabalhar com todos os itens, o laço for passa por cada um sem você precisar mexer em índices. Quando precisa também da posição, enumerate entrega índice e valor juntos. Para saber se um valor está na lista, o operador in devolve verdadeiro ou falso.
notas = [7, 5, 9, 4]
for nota in notas:
print(nota)
for i, nota in enumerate(notas):
print(i, nota) # 0 7 / 1 5 / 2 9 / 3 4
print(9 in notas) # True
print(10 in notas) # FalseO operador in é a forma correta de checar presença. Não é preciso escrever um laço só para procurar um item; deixe o Python fazer isso e leia melhor.
Ordenar: sort, sorted e reverse
O método sort ordena a própria lista no lugar e não devolve nada. A função sorted devolve uma lista nova ordenada e deixa a original como estava. O método reverse apenas inverte a ordem atual, sem ordenar.
valores = [3, 1, 4, 1, 5]
ordenada = sorted(valores) # nova lista, original intacta
print(ordenada) # [1, 1, 3, 4, 5]
print(valores) # [3, 1, 4, 1, 5]
valores.sort(reverse=True) # ordena a própria lista
print(valores) # [5, 4, 3, 1, 1]
nomes = ["ana", "bia", "caio"]
nomes.sort(key=len) # ordena pelo tamanho
print(nomes) # ['ana', 'bia', 'caio']Use sorted quando ainda vai precisar da ordem original em outro ponto. O parâmetro key ordena por um critério, como o tamanho de cada texto, e reverse=True inverte para ordem decrescente.
List comprehension: montar listas em uma linha
A list comprehension cria uma lista nova a partir de outra, em uma linha, aplicando uma expressão a cada item e, se quiser, filtrando com uma condição. É idiomática em Python e mais enxuta que um laço com append.
numeros = [1, 2, 3, 4, 5, 6]
dobrados = [n * 2 for n in numeros]
print(dobrados) # [2, 4, 6, 8, 10, 12]
pares = [n for n in numeros if n % 2 == 0]
print(pares) # [2, 4, 6]A leitura segue a fala: para cada n em numeros, pegue n * 2. A condição no fim mantém só os itens que passam no teste. Para transformações simples, prefira a comprehension; para lógica longa, um laço comum lê melhor.
Métodos de lista mais usados
| Método | O que faz |
|---|---|
append(x) | Adiciona um item ao fim da lista |
insert(i, x) | Insere o item x na posição i |
extend(seq) | Adiciona cada item de outra sequência |
remove(x) | Apaga a primeira ocorrência do valor x |
pop(i) | Tira e devolve o item da posição i (ou o último) |
index(x) | Devolve a posição da primeira ocorrência de x |
count(x) | Conta quantas vezes x aparece |
sort() | Ordena a própria lista no lugar |
copy() | Devolve uma cópia independente da lista |
Cópia contra referência: o tropeço clássico
Este é o erro que mais confunde quem começa. Escrever nova = antiga não copia a lista: as duas variáveis passam a apontar para a mesma lista na memória. Mexer em uma altera a outra.
a = [1, 2, 3]
b = a # NÃO copia, é o mesmo objeto
b.append(4)
print(a) # [1, 2, 3, 4] <- mudou junto!
c = a.copy() # cópia de verdade (ou list(a), ou a[:])
c.append(9)
print(a) # [1, 2, 3, 4] <- intactaQuando precisa de uma lista independente, use a.copy(), list(a) ou o fatiamento a[:]. Guardar essa diferença cedo evita bugs que parecem mágica.
Erros comuns com listas
- Pedir um índice fora do intervalo, como
lista[10]numa lista de quatro itens, o que geraIndexError. - Confundir
appendcomextende acabar com uma lista dentro da lista sem querer. - Achar que
nova = antigacopia a lista, quando na verdade as duas apontam para o mesmo objeto. - Remover itens de uma lista enquanto a percorre com
for, o que pula elementos; percorra uma cópia ou monte uma lista nova. - Esperar que
sortdevolva a lista ordenada; ele devolveNonee ordena no lugar. Quem devolve ésorted.
O curso de Python do zero cobre listas, laços, fatiamento e os métodos deste guia com playground no navegador, exercícios corrigidos e certificado, sem custo. Depois de dominar as listas, avance para dicionários e classes no curso de Python intermediário.
Fontes
- Documentação oficial do Python: Estruturas de dados: referência dos métodos de lista, fatiamento e list comprehension.
- Python.org: site oficial da linguagem, com tutorial de introdução.
- MDN Web Docs: referência de conceitos de programação, útil para complementar.
Conclusão
Lista é a coleção ordenada e mutável do Python: você cria com colchetes, acessa por índice (inclusive negativo), recorta com fatiamento, cresce com append, insert e extend, encolhe com remove, pop e del, percorre com for e ordena com sort ou sorted. Guarde a diferença entre cópia e referência e você evita o bug mais comum. A melhor forma de fixar é escrever e testar. Para praticar com playground, exercícios e certificado gratuitos, use o curso de Python do zero e conheça todos os cursos gratuitos do ValorFinal.