Ao trabalhar com listas no Python, uma tarefa comum é contar quantas vezes um item específico aparece. Isso pode ser facilmente alcançado usando métodos e classes integrados. Neste artigo, exploraremos como contar as ocorrências de um único item, bem como como fazer o levantamento de todos os itens em uma lista.
Contando as Ocorrências de um Único Item
Se você está interessado em descobrir quantas vezes um elemento específico ocorre em uma lista, você pode usar o método count
. Este método é direto e eficiente para itens individuais. Veja como você pode usá-lo:
minha_lista = [1, 2, 3, 4, 1, 4, 1]
contagem_de_item = minha_lista.count(1)
print(contagem_de_item) # Saída: 3
TestarNo exemplo acima, contamos quantas vezes o número 1
aparece na nossa lista, que é 3
.
No entanto, é importante notar que usar o método count
repetidamente em um loop pode ser lento, especialmente para listas grandes. Isso ocorre porque cada chamada ao count
percorre toda a lista. Se você está contando vários itens diferentes, isso pode levar a um problema de desempenho.
Contando as Ocorrências de Múltiplos Itens
Quando você precisa contar as ocorrências de cada elemento diferente em uma lista, você deve considerar o uso da classe Counter
do módulo collections
. Isso é particularmente útil se você está trabalhando com o Python 2.7 ou qualquer versão do Python 3.
Aqui está um exemplo de como usar Counter
:
from collections import Counter
cores = ['azul', 'vermelho', 'azul', 'amarelo', 'azul', 'vermelho']
contagem_de_cores = Counter(cores)
print(contagem_de_cores) # Saída: Counter({'azul': 3, 'vermelho': 2, 'amarelo': 1})
TestarA classe Counter
fornece um objeto semelhante a um dicionário onde as chaves são os elementos da lista e os valores são suas contagens. Este método é muito mais eficiente do que usar count
em um loop porque requer apenas uma única passagem pela lista.
Fazendo o Levantamento de uma Lista com count
e Counter
Para fazer o levantamento de uma lista, o que significa contar as ocorrências de todos os itens, você pode usar tanto o método count
dentro de uma compreensão de lista quanto a classe Counter
.
Usando count
com uma compreensão de lista:
l = ["a", "b", "b"]
levantamento_com_count = [[x, l.count(x)] for x in set(l)]
print(levantamento_com_count) # Saída: [['a', 1], ['b', 2]]
TestarUsando Counter
:
from collections import Counter
levantamento_com_counter = Counter(l)
print(levantamento_com_counter) # Saída: Counter({'b': 2, 'a': 1})
TestarDesempenho: Counter
vs. count
Em termos de desempenho, Counter
é significativamente mais rápido do que usar count
em um loop. A diferença na velocidade se deve ao fato de Counter
realizar apenas uma única passagem pela lista, enquanto count
requer várias passagens.
Para ilustrar isso, considere o seguinte teste de desempenho:
# Script de comparação de desempenho (simplificado para brevidade)
from collections import Counter
import timeit
# Cronometrando Counter
tempo_counter = timeit.timeit('Counter(l)', 'from collections import Counter; l = ["a", "b", "b"]', number=10000)
# Cronometrando count em uma compreensão de lista
tempo_count = timeit.timeit('[[x,l.count(x)] for x in set(l)]', 'l = ["a", "b", "b"]', number=10000)
print("Counter(): ", tempo_counter)
print("count(): ", tempo_count)
TestarA saída mostrará que Counter
é consistentemente mais rápido, muitas vezes por um fator de 2 ou mais.
Resumo
Em resumo, para contar as ocorrências de um único item em uma lista, use o método count
. Para contar vários itens, Counter
do módulo collections
é a escolha preferida devido à sua eficiência. Lembre-se de que, embora count
seja simples e direto para itens individuais, Counter
é muito mais rápido para fazer o levantamento de listas inteiras. Esse conhecimento ajudará você a escrever códigos Python mais eficientes ao lidar com ocorrências de itens em listas.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários