Wprowadzenie

Listy są przydatne na różne sposoby w porównaniu do innych datatypów ze względu na to, jak bardzo są uniwersalne. W tym artykule przyjrzymy się jednej z najczęściej wykonywanych operacji na listach – znajdowaniu indeksu elementu.

Przyjrzymy się różnym scenariuszom znajdowania elementu, tj. znajdowaniu pierwszego, ostatniego i wszystkich wystąpień elementu. A także co się stanie, gdy element, którego szukamy nie istnieje.

Użycie funkcji index()

Parametr element oczywiście reprezentuje element, którego szukamy. Parametry start i end są opcjonalne i reprezentują zakres indeksów, w których szukamy elementu element.

Domyślną wartością dla start jest 0 (szukanie od początku), a domyślną wartością dla end jest liczba elementów na liście (szukanie do końca listy).

Funkcja zwraca pierwszą pozycję element na liście, którą udało się znaleźć, niezależnie od tego, ile jest równych elementów po pierwszym wystąpieniu.

Znajdowanie pierwszego wystąpienia elementu

Użycie funkcji index() bez ustawiania żadnych wartości dla start i end da nam pierwsze wystąpienie elementu element, którego szukamy:

my_list = first_occurrence = my_list.index('b')print("First occurrence of 'b' in the list: ", first_occurrence)

Co dałoby nam oczekiwane dane wyjściowe:

First occurrence of 'b' in the list: 1

Wyszukiwanie wszystkich wystąpień elementu

Aby znaleźć wszystkie wystąpienia elementu, możemy użyć opcjonalnego parametru start tak, abyśmy wyszukiwali tylko w określonych segmentach listy.

Na przykład, powiedzmy, że znaleźliśmy pierwsze wystąpienie elementu w indeksie 3. Aby znaleźć następny element, musielibyśmy kontynuować wyszukiwanie pierwszego wystąpienia tego elementu po indeksie 3. Powtarzamy ten proces, zmieniając miejsce rozpoczęcia wyszukiwania, tak długo, jak długo znajdujemy nowe wystąpienia elementu:

Wykonanie tego kodu dałoby nam:

The element was found at: 

Musieliśmy tutaj użyć bloku try, ponieważ funkcja index() wyrzuca błąd, gdy nie może znaleźć podanego element w podanym zakresie. Może to być nietypowe dla programistów, którzy są bardziej przyzwyczajeni do innych języków, ponieważ funkcje tego typu zazwyczaj zwracają -1null gdy element nie może zostać znaleziony.

Jednakże w Pythonie musimy być ostrożni i używać bloku try gdy używamy tej funkcji.

Innym, bardziej zgrabnym sposobem na zrobienie tego samego byłoby użycie list comprehension i całkowite zignorowanie funkcji index():

Co dałoby nam takie same dane wyjściowe jak poprzednio. To podejście ma dodatkową zaletę, że nie używa bloku try.

Wyszukiwanie ostatniego wystąpienia elementu

Jeśli potrzebujesz znaleźć ostatnie wystąpienie elementu na liście, istnieją dwa podejścia, których możesz użyć z funkcją index():

  • Odwróć listę i poszukaj pierwszego wystąpienia na odwróconej liście
  • Przejdź przez wszystkie wystąpienia elementu i śledź tylko ostatnie wystąpienie

Odnosząc się do pierwszego podejścia, jeśli znaliśmy pierwsze wystąpienie elementu element na odwróconej liście, moglibyśmy znaleźć pozycję ostatniego wystąpienia na oryginalnej liście. Dokładniej, możemy to zrobić, odejmując reversed_list_index - 1 od długości oryginalnej listy:

Co dałoby nam pożądane dane wyjściowe:

6

Jeśli chodzi o drugie podejście, moglibyśmy podrasować kod, którego użyliśmy do znalezienia wszystkich wystąpień i śledzić tylko ostatnie znalezione wystąpienie:

Co dałoby nam to samo wyjście:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *