Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

Liczenie wielu powtarzających się obiektów za jednym razem stanowiło ogromny problem w środowisku programistycznym. Na szczęście Python oferuje kilka technik i narzędzi, z których można skorzystać, aby rozwiązać ten problem. Licznik, który Python udostępnia ze swoich kolekcji, oferuje pythonowskie, wydajne i czyste rozwiązanie.
Podklasa ta oferuje doskonałe funkcje liczenia, czego programiści zawsze szukają. Zrozumienie, czym jest licznik w Pythonie i jak efektywnie go używać, jest przydatną umiejętnością, którą programiści Pythona muszą opanować.

Jak Python zlicza obiekty

Istnieje wiele sytuacji, w których trzeba policzyć liczbę obiektów obecnych w źródle danych, aby dowiedzieć się, jak regularnie występują. Mówiąc prościej, chcesz się dowiedzieć, jaka jest ich częstotliwość. Na przykład można określić, jak często dany element pojawia się w sekwencji wartości lub na liście. Liczenie elementów może być bardzo szybkie i proste, zwłaszcza gdy listy są krótkie. Z drugiej strony, liczenie może stać się czasochłonne i skomplikowane, gdy lista jest długa.
Do efektywnego liczenia przedmiotów ludzie zazwyczaj używają licznika. Dla tych, którzy się zastanawiają, licznik jest zmienną całkowitą, której wartością początkową jest zero. Po zakończeniu zliczania musisz inkrementować licznik, który służy do odzwierciedlania liczby wystąpień danego obiektu w źródle danych (danych wejściowych).

Gdy zliczasz liczbę wystąpień obiektu, idealnym rozwiązaniem byłoby użycie pojedynczego licznika. Jednak liczenie wielu obiektów jest zupełnie inne, ponieważ trzeba utworzyć licznik dla każdego unikalnego obiektu, który jest liczony. Jeśli chcesz policzyć wiele obiektów za jednym razem, dobrym wyborem będzie użycie słownika Pythona.

Klucze w słowniku pomogą Ci zapisać każdy obiekt, który zamierzasz policzyć. Co więcej, wartości słownika mogą śledzić powtórzenia obiektu, dzięki czemu proces liczenia staje się stosunkowo prosty.

Na przykład, jeśli chcesz użyć słownika do zliczania obiektów w postaci sekwencji, najlepiej będzie wykonać pętlę nad całą sekwencją i sprawdzić, czy dany obiekt znajduje się w słowniku inicjalizacji pary klucz-wartość. Gdy już to zrobisz, możesz inkrementować licznik stosownie do sytuacji.

Jak działa licznik w Pythonie

Jak już wspomniano, licznik jest w zasadzie podklasą słownika Pythona, zaprojektowaną specjalnie do zliczania obiektów haszowalnych obecnych w programie Pythona. Słownik ten przechowuje obiekty takie jak liczniki i klucze w postaci wartości. Aby skorzystać z licznika, należy podać iterowalną lub sekwencję różnych obiektów haszowalnych, która będzie stanowić argument krytyczny dla konstruktora klasy.

Licznik początkowo iteruje za pomocą sekwencji wejściowej, a następnie zlicza, ile razy dany obiekt się pojawi. Omówmy teraz typowe techniki, które programiści wykorzystują do konstruowania liczników:

Konstrukcja licznika
Do tworzenia instancji licznika można wykorzystać wiele technik, ale jeśli głównym celem jest zliczanie wielu obiektów jednocześnie, najlepiej będzie użyć iterowalnej lub sekwencji do rozpoczęcia zliczania.

Aktualizowanie liczników obiektów
Po utworzeniu instancji licznika, użyj polecenia .update(), aby zaktualizować ją o nowe zliczenia i obiekty. Zamiast zastępować wartości, implementacja polecenia .update(), którą dostarcza licznik, upewnia się, że istniejące liczniki są razem. Tworzy również nowe pary kluczy zliczających, gdy tylko jest to konieczne.
Programiści mogą używać polecenia .update() zarówno z mapowaniami, jak i iterablami jako argumentami. Pamiętaj, że jeśli używasz iterowalnej, metoda ta zlicza elementy, a następnie aktualizuje licznik.

Licznik z ciągiem znaków
Python traktuje wszystko jako obiekty, w tym łańcuchy znaków. Możesz łatwo utworzyć łańcuch w Pythonie, łącząc znaki za pomocą podwójnego cudzysłowu. Warto pamiętać, że ponieważ Python nie rozpoznaje typów znaków, traktuje ciągi znaków jako jeden, co w świecie programowania określa się mianem podciągu.
W poniższym przykładzie pokazano ciąg, który przeszedł przez licznik. Oprócz zwracania formatu słownikowego za pomocą pary klucz i wartość, uwzględnia on również tempo.

from collections import Counter
my_str = “Witaj w nauce programowania!”
print(Licznik(mój_str))
Wyjście:
Counter({‘o’: 3, ‘ ‘: 3, ‘u’: 3, ‘e’: 2, ‘l’: 2, ‘t’: 2, ‘r’: 2, ‘9’: 2, ‘W’: 1,
‘c’: 1, “m”: 1, “G”: 1, ‘T’: 1, ‘i’: 1, ‘a’: 1, ‘s’: 1, ‘!’: 1})

Licznik za pomocą słownika
Słownik zawiera elementy w postaci pary klucz i wartość. Elementy te należy zapisać w nawiasach klamrowych. Po przejściu do licznika słownik przekształca się w obiekty hashtable. W międzyczasie elementy zamieniają się w klucze. Poniżej znajduje się przykład, aby wszystko wyjaśnić:
from collections import Counter
dict1 = {‘x’: 4, ‘y’: 2, ‘z’: 2, ‘z’: 2}
print(Licznik(dict1))
Wyjście:
Licznik({‘x’: 4, ‘y’: 2, ‘z’: 2})

Liczenie za pomocą tupli
Tuple to w swojej istocie grupa obiektów podzielonych za pomocą przecinków umieszczonych w nawiasach okrągłych. Licznik oferuje zliczanie dla każdego elementu w obrębie tupli. Tuple staje się obiektem hashtable po przejściu do licznika, podczas gdy elementy w nim obecne stają się kluczami, a wartości reprezentują całkowitą liczbę elementów.

Licznik w Pythonie – najważniejsze wnioski

W tym rozdziale omówiliśmy, czym jest licznik w Pythonie i w jaki sposób pomaga on zliczać liczne obiekty znajdujące się w iterowalnej. Oto najważniejsze wnioski z tego, czego się dowiedzieliśmy.

Licznik wykorzystuje obiekty dict, listy, łańcuchy i inne iterable do zliczania obiektów, o ile są one hashowalne

Musisz użyć polecenia most_common, jeśli chcesz znaleźć wspólne elementy w obiektach kolekcji

Podczas korzystania z klasy Counter programiści mogą napotkać błędy w przypadku, gdy w obiekcie kontenera (na przykład w obiekcie listy) znajduje się element niehashowalny. Można rozwiązać ten problem, biorąc element listy i konwertując go na Tuple przed przekazaniem go do klasy Counter

 

 

Języki

Weekly newsletter

No spam. Just the latest releases and tips, interesting articles, and exclusive interviews in your inbox every week.