Menu

Listas em Python: como criar, indexar, adicionar, ordenar e iterar

Um passeio prático pelas listas em Python — a coleção mais comum — cobrindo criação, indexação, fatiamento, append, sort e os padrões que você mais vai usar.

Esta página tem editores executáveis — edite, execute e veja a saída na hora.

Listas são sequências ordenadas e mutáveis

A lista é o tipo de coleção mais usado em Python. Se você está mantendo um conjunto ordenado de valores que pode mudar — adicionar, remover, ordenar, atualizar — uma lista é quase sempre a escolha certa.

Crie uma com colchetes:

Listas podem conter qualquer coisa, até outras listas. Na prática, a maioria das listas acaba contendo um tipo só de coisa — uma lista de usuários, uma lista de números — porque é o que é mais fácil de raciocinar.

Indexação

Cada item tem uma posição, começando em 0. Acesse com colchetes:

Pedir um índice que não existe gera IndexError. Se você pode estar fora de alcance, ou confira o tamanho antes ou envolva o acesso num try.

Fatiamento

Fatiamento te dá um intervalo de itens. A sintaxe é lista[start:stop:step], igual a strings:

Duas coisas para fixar:

  • Fatiamento sempre retorna uma nova lista. Modificar a fatia não afeta a original.
  • O índice stop é exclusivo — nums[2:5] dá os índices 2, 3 e 4, não 5.

Como adicionar, estender e inserir itens

Os três métodos de "adicionar a uma lista" fazem coisas diferentes, e misturar eles é fonte comum de bug:

  • append(x) adiciona x como um único elemento — mesmo que x seja uma lista. items.append([1, 2]) adiciona a lista em si como uma entrada.
  • extend(iteravel) adiciona cada item do iterável. items.extend([1, 2]) adiciona duas entradas.
  • insert(i, x) insere num índice específico, deslocando tudo que está em i ou depois uma posição para a direita.

+= com uma lista à direita funciona como extend:

E para remover:

Se você tentar remove() algo que não está na lista, o Python gera ValueError. Se precisa de "remover se presente", ou cheque in antes ou use um try.

Você também pode deletar por índice com del:

Tamanho, pertinência, contagem

in é o jeito legível de checar se uma lista contém um valor. Se você vai fazer essa pergunta muitas vezes sobre uma lista grande, use um set — pertinência em set é O(1) onde pertinência em lista é O(n).

Ordenando

Duas formas, e a escolha importa:

As duas aceitam reverse=True para ordem decrescente:

E uma função key para ordenação customizada:

key é aplicada a cada item, e o resultado é o que é comparado. Casos comuns: ordenar por tamanho, por um atributo específico ou pela forma minúscula de uma string.

Invertendo

Três sabores, dependendo do que você precisa:

Use in place quando não precisa da original. Use fatiamento quando quer uma cópia nova. Use reversed() quando só precisa iterar em ordem inversa sem materializar uma lista nova.

A armadilha da referência compartilhada

Listas são mutáveis, e variáveis são referências. Isso significa que duas variáveis podem apontar para a mesma lista:

b = a não copiou a lista; deu a b um segundo nome para a mesma lista. Se você quer uma cópia, peça uma:

Isso morde todo programador Python pelo menos uma vez. Lembre: = entre duas listas não copia.

Percorrendo e construindo

Você já conhece o padrão básico da página do laço for:

Isso é legível e sempre vai estar bem. Quando estiver à vontade, o equivalente com list comprehension faz a mesma coisa em uma linha:

Vamos cobrir comprehensions em detalhe duas páginas à frente.

Folha de cola rápida

Métodos que vale conhecer, num relance:

  • append(x) — adiciona ao fim
  • extend(iter) — adiciona cada item de um iterável
  • insert(i, x) — insere no índice i
  • pop() / pop(i) — remove e retorna
  • remove(x) — remove a primeira ocorrência de x
  • sort() / sort(key=...) / sort(reverse=True)
  • reverse()
  • index(x) — posição do primeiro x
  • count(x) — número de x's
  • copy() — cópia rasa

Próxima

Listas são o cavalo de batalha. A seguir vamos olhar tuplas — a prima imutável — e quando pegar uma tupla em vez é a escolha melhor.

Perguntas frequentes

Como crio uma lista em Python?

Use colchetes com valores separados por vírgula: frutas = ['maca', 'banana', 'cereja']. Listas podem conter qualquer tipo, e você pode misturar tipos na mesma lista, embora a maioria das listas reais seja homogênea por costume.

Como ordeno uma lista em Python?

Chame .sort() na lista para ordenar in place, ou use a função embutida sorted(lista) para obter uma nova lista ordenada sem mexer na original. As duas aceitam uma flag reverse=True para ordem decrescente e um argumento key= para chaves de ordenação customizadas.

Como inverto uma lista em Python?

lista.reverse() inverte in place. lista[::-1] retorna uma nova lista invertida. reversed(lista) retorna um iterador sobre o qual você pode fazer laço. Escolha o que combina com sua necessidade: in place, cópia nova ou iteração preguiçosa.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR