Wyznaczanie najczęstszego elementu w liście

W Pythonie za pomocą zaledwie kilku linijek kodu jesteśmy w stanie wykonać operacje, które w innych językach wymagają przygotowania w postaci specjalnie napisanych funkcji. Właśnie dlatego warto znać ten język i różnego rodzaju skróty, na które pozwala. Takim skrótem jest umiejętność wyznaczania najczęstszego elementu z listy w Pythonie, który omówię w tym artykule

Najczęstszy element, czyli…

Załóżmy, że mamy zadaną listę [4,4,2,3,5,6,7,8,8,7,5,4,3,2,4] oraz polecenie, które każe nam wyznaczyć element listy, który powtarza się najczęściej. Matematycznie nazwalibyśmy go dominantą.

Można użyć do rozwiązania problemu pętli, która po napotkaniu nowego elementu listy dodawałaby go do nowej z licznikiem równym 0, a po napotkaniu każdego kolejnego takiego elementu zwiększała licznik o 1, ale jest to metoda dość czasochłonna. O wiele lepszym sposobem będzie użycie wbudowanych możliwości Pythona.

Przykładowy kod, wyszukujący najczęstszy element listy wygląda następująco:

1
2
3
x = [4,4,2,3,5,6,7,8,8,7,5,4,3,2,4]
naj = max(set(x), key = x.count)
print(naj)

Tyle wystarczy, żeby wydrukować na ekran najczęstszy element z listy w Pythonie.

Jak działa ten skrypt

Tak naprawdę najważniejszą częścią całego skryptu jest linijka, w której deklarujemy zmienną naj. Używamy do tego funkcji max(), która z zadanego zbioru jest w stanie wyznaczyć maksymalną wartość. Przykładowo max(2,5,2,5,6) zwróci wartość 6 – największą z liczb.

Jednak funkcja max() ma ukryte zdolności, o których nie każdy wie. Możemy sprawić, żeby zwracała nie największy element, ale ten najczęściej występujący. Wykorzystuje się do tego parametr key =, którym u nas jest x.count, czyli liczebność poszczególnych elementów w liście max().

Warte wspomnienia jest też użycie funkcji max() nie na liście x, ale na set(x) – zbiorze stworzonym z elementów listy x. Dlaczego tak? Zbiory kasują dublujące się elementy, co przyspiesza działanie samego skryptu.

Podsumowanie

Właśnie tak wyznacza się najczęstszy element listy w Pythonie. Zaznaczam przy okazji, że skrypt działa idealnie wtedy, gdy najczęstszy element jest jeden, ale na tym polega właśnie bycie najczęstszym. Gdy np. dwa elementy listy będą powtarzały się równie często – skrypt wydrukuje na ekranie tylko jeden z nich.