HOWTO · Python
Contar elementos na lista Python
Este tutorial demonstra como contar elementos em uma lista em Python
Nesta página
“Contar elementos em uma lista” pode significar três tarefas diferentes, e o Python tem uma ferramenta direta para cada uma. Use len() quando precisar do número total de itens, list.count() quando precisar das ocorrências de um único valor e Counter do módulo collections quando precisar de uma frequência para cada valor de uma só vez. Um loop manual com um dicionário produz o mesmo resultado de frequências e mostra exatamente como a contagem funciona. Este tutorial apresenta cada método com exemplos executáveis para que você escolha a abordagem adequada à sua tarefa.
Obtenha o número total de itens com len()
A função integrada len() retorna o número de itens do nível superior de uma lista. Ela funciona com elementos de qualquer tipo — números, strings, booleanos ou até outras listas — porque mede a própria lista, não os valores dentro dela.
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
items = [10, "apple", 3.14, [1, 2, 3]]
print(len(items))
4
A lista contém quatro itens: um inteiro, uma string, um número de ponto flutuante e uma lista aninhada. len() retorna 4 porque a lista aninhada [1, 2, 3] conta como um único item no nível externo. Se você precisar incluir itens armazenados em listas aninhadas, achate a estrutura primeiro ou some separadamente os comprimentos das listas internas — len() nunca olha além do nível superior.
Conte as ocorrências de um valor com list.count()
O método list.count() retorna quantas vezes um determinado valor aparece na lista. Passe o valor procurado e ele percorre a lista para você:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
my_list = [1, 2, 3, 2, 1, 4, 2]
print(my_list.count(2))
print(my_list.count(9))
3
0
O valor 2 aparece três vezes, enquanto 9 nunca aparece; portanto, a segunda chamada retorna 0. list.count() funciona com qualquer tipo de elemento que a lista possa conter, incluindo strings e dados de tipos mistos.
Lembre-se de duas limitações. Cada chamada responde a uma pergunta sobre um valor, portanto contar três valores diferentes exige três chamadas separadas — para uma distribuição de frequência completa, use Counter ou um loop. E em uma lista aninhada, list.count() só corresponde a itens inteiros iguais ao valor passado; um valor armazenado dentro de uma lista aninhada não é visto, a menos que você achate a lista primeiro.
Conte todos os valores com Counter
A classe Counter do módulo collections cria um mapa de frequências para todos os valores em uma única passagem. Ela se comporta como um dicionário que associa cada elemento à sua contagem:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
from collections import Counter
my_list = [1, 2, 3, 2, 1, 4, 2]
element_count = Counter(my_list)
print(element_count)
print(element_count[2])
print(element_count[9])
Counter({2: 3, 1: 2, 3: 1, 4: 1})
3
0
A indexação de um Counter funciona como a de um dicionário, com uma diferença útil: ler uma chave que nunca foi contada retorna 0 em vez de gerar um erro, então element_count[9] imprime 0 com segurança.
Como cada valor se torna internamente uma chave de dicionário, todos os elementos precisam ser hashable. Inteiros, strings e tuplas atendem a esse requisito; uma lista aninhada não. Para listas de itens não hashable, converta os itens primeiro para uma forma hashable ou conte-os com outra abordagem.
Crie um dicionário de frequências com um loop
Um loop simples com um dicionário produz as mesmas frequências e deixa a mecânica visível. Inicialize um dicionário e, em seguida, incremente a contagem de cada elemento ao percorrer a lista:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
my_list = [1, 2, 3, 2, 1, 4, 2]
element_count = {}
for element in my_list:
if element in element_count:
element_count[element] += 1
else:
element_count[element] = 1
print(element_count)
{1: 2, 2: 3, 3: 1, 4: 1}
O resultado associa cada valor à sua contagem: 2 aparece três vezes, 1 aparece duas vezes, e 3 e 4 aparecem uma vez. Esse padrão faz uma única passagem pela lista e oferece controle total — você pode transformar cada elemento antes de contar, ignorar valores selecionados ou acumular algo diferente de uma contagem simples. A mesma restrição se aplica: os elementos precisam ser hashable, pois cada um se torna uma chave de dicionário; itens não hashable, como listas aninhadas, devem ser convertidos ou achatados primeiro.
Para escolher entre essas ferramentas, associe o método à pergunta. Use len() para o número total de itens, list.count() para um valor e Counter ou um loop com dicionário para um mapa completo de frequências.