![](https://hub.asimov.academy/wp-content/uploads/2024/06/ThumbCursoPythonMasterClass-14.webp)
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.
![](https://hub.asimov.academy/wp-content/uploads/2024/04/image-2.png)
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.
![](https://hub.asimov.academy/wp-content/uploads/2024/06/maxresdefault-6.jpg)
Comentários