Jak liczyć wystąpienia na liście w Pythonie
Poznaj najlepsze sposoby zliczania wystąpień elementów na liście w języku Python. Porównaj metodę count(),collections.Counter i zliczanie słownikowe.
Przegląd
Analizowanie zbiorów danych często wymaga zliczenia wystąpień poszczególnych elementów. Na przykład policzenie, ile głosów otrzymał każdy kandydat, zliczenie częstotliwości słów w plikach tekstowych lub identyfikacja duplikatów w dziennikach transakcji. Python udostępnia kilka narzędzi do rozwiązania tego problemu, w zależności od tego, czy szukasz pojedynczej liczby elementów, czy pełnego zestawienia częstotliwości.
W celu sprawdzenia częstotliwości pojedynczego, określonego elementu, wbudowany typ listy udostępnia metodę `.count(value)`. Wykonuje iterację po liście i zwraca liczbę całkowitą określającą, ile razy pojawiła się ta dokładna wartość. Choć proste i czytelne, wywoływanie `.count()` w pętli w celu uzyskania zliczeń dla wszystkich elementów jest wysoce nieefektywne, ponieważ działa ze złożonością O(N^2).
Aby policzyć częstotliwości wszystkich elementów jednocześnie w jednym przebiegu, standardowa biblioteka oferuje klasę „Licznik” w module „kolekcje”. Przekazanie listy do „Licznika” zwraca obiekt przypominający słownik reprezentujący częstotliwości wszystkich elementów w czasie O(N). Udostępnia także metody pomocnicze, takie jak `most_common()`, umożliwiające szybkie pobieranie najważniejszych elementów.
Dane wyjściowe kodu i wykonania
Ten kod demonstruje zliczanie pojedynczych elementów na listach i uzyskiwanie całkowitej liczby elementów za pomocą kolekcji.Counter.
from collections import Counter
colors = ["red", "blue", "red", "green", "blue", "red"]
# Method 1: Count a single item using list.count()
red_count = colors.count("red")
print("Occurrences of 'red':", red_count)
# Method 2: Count all items using collections.Counter (Fast and powerful)
color_counts = Counter(colors)
print("\nCounter Object:", color_counts)
print("Count of 'blue':", color_counts["blue"])
# Getting the top most common items
print("Most common color:", color_counts.most_common(1))
# Method 3: Counting manually using a loop and a standard dictionary
manual_counts = {}
for item in colors:
manual_counts[item] = manual_counts.get(item, 0) + 1
print("\nManual dict count:", manual_counts)Occurrences of 'red': 3
Counter Object: Counter({'red': 3, 'blue': 2, 'green': 1})
Count of 'blue': 2
Most common color: [('red', 3)]
Manual dict count: {'red': 3, 'blue': 2, 'green': 1}Wdrażanie krok po kroku
- Wywołaj list_variable.count(value), jeśli potrzebujesz tylko liczby jednego konkretnego elementu na liście.
- Importuj kolekcje. Licz i przekazuj listę, aby policzyć wszystkie unikalne elementy w jednym zoptymalizowanym przebiegu.
- Użyj metody .most_common(n) na obiekcie Counter, aby wyodrębnić n najczęściej występujących elementów.
Często zadawane pytania
Co się stanie, jeśli wyszukam brakujący klucz w obiekciecollections.Counter?
W przeciwieństwie do standardowego słownika, który zgłasza błąd KeyError, obiekt Counter zwraca 0 w przypadku brakujących elementów, co oznacza zero wystąpień.
Jaka jest złożoność czasowa Counter w porównaniu do liczenia w pętli za pomocą list.count()?
Licznik zlicza wszystkie elementy w czasie liniowym O(N), przechodząc przez listę raz. Iteracja po elementach listy i wywołanie metody list.count() zajmuje czas kwadratowy O(N^2), co jest niezwykle powolne w przypadku dużych list.
Powiązane tematy
Dowiedz się, jak znaleźć długość listy w Pythonie za pomocą funkcji len(). Zrozumienie złożoności czasowej O(1) i liczby kontroli.
Jak usunąć duplikaty z listy w PythonieDowiedz się, jak usunąć duplikaty z listy w Pythonie, zachowując lub ignorując porządek. Porównaj konwersje zestawów, klawisze dyktowania i metody pętli.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Listy Pythona
Dowiedz się wszystkiego o listach w Pythonie. Odkryj, jak tworzyć, wycinać, modyfikować i iterować po tablicach natywnie w języku Python.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.