Módulo 10 - Listas em Python

Adicionando itens: append no fim, insert na posição

10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Acrescentar itens no fim de uma lista com o método append().
  • Encaixar um item numa posição específica com insert().
  • Escolher entre append e insert conforme a ordem importar ou não.
  • Aplicar o padrão fundamental: começar com lista vazia e crescer dentro de um loop.

Crescendo pelo fim: append()

Até aqui, as listas das aulas já nasciam prontas, com os itens escritos no código. A vida real é diferente: o carrinho de compras começa vazio e ganha produtos conforme o cliente escolhe. Para isso existe o append, acrescentar em inglês. A escrita é nova para você: o nome da lista, um ponto e o método, como frutas.append("uva"). Esse ponto diz ao Python: chame a operação append DESTA lista. Métodos assim já apareceram no módulo de textos, com o upper() e o strip(); a lista tem os dela.

frutas = ["maçã", "banana"]
frutas.append("laranja")
print(frutas)
# Saída: ['maçã', 'banana', 'laranja']

frutas.append("uva")
print(frutas)
# Saída: ['maçã', 'banana', 'laranja', 'uva']

Cada append acrescenta um item no fim. A lista cresceu de 2 para 4 itens sem tocar nos anteriores.

Dois detalhes que economizam sustos. Primeiro: append recebe um item por vez; frutas.append("uva", "pera") dá erro. Quer adicionar vários? Chame o método várias vezes ou use um loop, como você vai ver já já. Segundo: append altera a lista original diretamente, sem precisar de atribuição. Escrever frutas = frutas.append("uva") é um erro clássico que DESTRÓI a lista, porque append não devolve nada e a variável fica valendo None. A forma certa é a chamada seca: frutas.append("uva").

insert(): quando a posição importa

O append sempre joga o item no fim, e na maioria dos casos é isso mesmo que você quer. Mas às vezes a posição importa: numa fila de atendimento, o cliente prioritário entra na FRENTE. Para esses casos existe o insert, que recebe dois valores: a posição de destino e o item. fila.insert(0, "Dona Maria") coloca Dona Maria no índice 0, o início, e todo mundo desliza uma casa para a direita. Ninguém é apagado; a lista só cresce com o novo item no lugar pedido.

fila = ["Bruno", "Carla", "Diego"]

fila.insert(0, "Dona Maria")   # prioridade: entra no INÍCIO
print(fila)
# Saída: ['Dona Maria', 'Bruno', 'Carla', 'Diego']

fila.insert(2, "Eduardo")      # entra na posição 2, no meio
print(fila)
# Saída: ['Dona Maria', 'Bruno', 'Eduardo', 'Carla', 'Diego']

insert(posicao, item): o item entra no índice pedido e os seguintes deslizam para a direita.

append(item)

  • Adiciona sempre no FIM da lista
  • Recebe um argumento: o item
  • Nenhum item muda de posição
  • É o padrão: use quando a ordem de chegada basta

insert(posicao, item)

  • Adiciona na posição que você escolher
  • Recebe dois argumentos: posição e item
  • Os itens da posição em diante deslizam uma casa
  • Use quando o lugar importa: início da fila, meio da lista

Uma curiosidade útil: se a posição pedida no insert for maior que o tamanho da lista, o Python não reclama com IndexError; ele simplesmente coloca o item no fim, como um append. E insert(0, item) é o jeito canônico de adicionar no início. Regra prática para escolher: na dúvida, append. O insert é a exceção para quando a posição carrega significado.

O padrão fundamental: lista vazia + loop

Agora a peça que junta este módulo com os dois anteriores e forma o padrão de construção mais usado do Python: comece com uma lista vazia e dê append dentro de um loop. É assim que um programa coleta respostas do usuário, junta resultados de um cálculo ou filtra dados. Veja o exemplo: um programa que pede 3 nomes de convidados e monta a lista da festa, juntando o input do módulo 5, o for do módulo 9 e o append de agora.

convidados = []                    # 1. a lista nasce vazia

for i in range(3):                 # 2. repete 3 vezes
    nome = input("Nome do convidado: ")
    convidados.append(nome)        # 3. cada resposta entra no fim

print(convidados)
print(f"Total: {len(convidados)} convidados")
# Digitando Ana, Bruno e Carla, a saída é:
# ['Ana', 'Bruno', 'Carla']
# Total: 3 convidados

O padrão em três passos: lista vazia, loop, append. Grave esse desenho; ele volta no curso inteiro.

Repare no que esse padrão desbloqueia: o programa não sabe de antemão quais nomes virão, nem precisa. A lista vazia é um recipiente, o loop é a esteira e o append vai enchendo. Troque o range(3) por um while com opção de sair e o programa aceita quantos convidados o usuário quiser; é exatamente essa a mecânica da lista de compras da prática, na aula 7. Antes dela, porém, falta a operação inversa: tirar itens da lista. É a próxima aula.

Teste rápido

O que faz o padrão lista vazia + loop + append, usado no exemplo dos convidados?

Perguntas frequentes

Qual a diferença entre método e função? append é o quê?
Função é chamada sozinha, como len(lista) e print(). Método é uma função que pertence a um valor e é chamada com ponto, como lista.append(item). Na prática: len() pergunta algo DE FORA da lista; append age DE DENTRO, alterando a própria lista.
Por que lista = lista.append(item) apaga a minha lista?
Porque append altera a lista no lugar e devolve None, o valor que representa nada em Python. A atribuição então substitui a sua lista por None. A forma correta é chamar lista.append(item) sozinho, sem sinal de igual.
Como adiciono vários itens de uma vez?
O jeito que o curso já ensinou: um loop com append. O Python também tem o método extend(), que emenda uma lista na outra (a.extend([1, 2, 3])), e o operador +, que junta duas listas numa nova. São atalhos que você vai reconhecer por aí; o append com loop resolve tudo neste nível.
insert() com posição gigante dá IndexError?
Não. Diferente do acesso por índice, o insert é tolerante: se a posição passar do fim, ele coloca o item no final, agindo como um append. E com posição negativa, ele conta do fim, como os índices negativos da aula anterior.
append deixa o programa lento em listas grandes?
Não: acrescentar no fim é uma das operações mais rápidas da lista, mesmo com milhões de itens. O insert no início é que trabalha mais, porque precisa deslocar todos os itens. Para este curso, a diferença é invisível; vale como cultura para o futuro.
Posso dar append de uma lista dentro de outra?
Pode: notas.append([10, 9]) coloca a lista [10, 9] como UM item da lista notas, criando uma lista aninhada. Às vezes é o que se quer, mas em geral o iniciante queria os itens soltos, e para isso o extend() é o caminho. Fique atento à diferença.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.