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)adicionaxcomo um único elemento — mesmo quexseja 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á emiou 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 fimextend(iter)— adiciona cada item de um iterávelinsert(i, x)— insere no índice ipop()/pop(i)— remove e retornaremove(x)— remove a primeira ocorrência de xsort()/sort(key=...)/sort(reverse=True)reverse()index(x)— posição do primeiro xcount(x)— número de x'scopy()— 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.