Zwykle potrzebujemy znaleźć indeks, w którym znajduje się dana wartość. Można to osiągnąć na wiele sposobów, np. za pomocą funkcji Index() itp. Czasem jednak konieczne jest znalezienie wszystkich indeksów danej wartości, na wypadek gdyby miała ona wiele wystąpień na liście. Omówmy pewne sposoby znajdowania indeksów wartości na podanej liście Pyton .
Sposoby wyszukiwania indeksów wartości na liście
Poniżej znajdują się metody, które omówimy w tym artykule:
- Stosowanie metody naiwnej
- Za pomocą Rozumienie listy
- Za pomocą Funkcja Wylicz().
- Za pomocą Funkcja filtru().
- Za pomocą Biblioteka Numpy
- Używać dla pętli
- Za pomocą Metoda list.index(). z podczas Pętli
Znajdź indeks pozycji metodą naiwną
Możemy wykonać to zadanie, przeglądając listę i sprawdzając tę wartość, a następnie dodając indeks wartości do nowej listy i drukując ją. Jest to podstawowa metoda brutalnej siły umożliwiająca osiągnięcie tego zadania.
Python3
# initializing list> test_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # printing initial list> print> (> 'Original list : '> +> str> (test_list))> # using naive method to find indices for 3> res_list> => []> for> i> in> range> (> 0> ,> len> (test_list)):> > if> test_list[i]> => => 3> :> > res_list.append(i)> # printing resultant list> print> (> 'New indices list : '> +> str> (res_list))> |
>
>Wyjście
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
posortuj tablicę Java
Znajdź indeks elementu za pomocą rozumienia listy
Rozumienie listy to po prostu skrótowa technika wykonania zadania polegającego na brutalnej sile, po prostu wykorzystuje mniejsze linie kodów do wykonania zadania, a tym samym oszczędza czas programistów.
Python3
# initializing list> test_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # printing initial list> print> (> 'Original list : '> +> str> (test_list))> # using list comprehension> # to find indices for 3> res_list> => [i> for> i> in> range> (> len> (test_list))> if> test_list[i]> => => 3> ]> # printing resultant list> print> (> 'New indices list : '> +> str> (res_list))> |
>
>Wyjście
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
Znajdź indeks elementu za pomocą funkcji Enumerate() F namaszczenie
Za pomocą wyliczać() możemy osiągnąć podobne zadanie, jest to nieco szybsza technika niż powyższa i dlatego zaleca się ją stosować zamiast techniki rozumienia listy.
Python3
# initializing list> test_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # printing initial list> print> (> 'Original list : '> +> str> (test_list))> # using enumerate()> # to find indices for 3> res_list> => [i> for> i, value> in> enumerate> (test_list)> if> value> => => 3> ]> # printing resultant list> print> (> 'New indices list : '> +> str> (res_list))> |
>
>Wyjście
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
Znajdź indeks elementu za pomocą filter() F namaszczenie
Jest to kolejna metoda, którą można zastosować do osiągnięcia tego konkretnego zadania, filtr() zwykle jest w stanie wykonać zadania filtrowania i dlatego może być również użyty w tej sytuacji do osiągnięcia tego zadania.
Python3
# initializing list> test_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # printing initial list> print> (> 'Original list : '> +> str> (test_list))> # using filter() to find indices for 3> res_list> => list> (> filter> (> lambda> x: test_list[x]> => => 3> ,> range> (> len> (test_list))))> # printing resultant list> print> (> 'New indices list : '> +> str> (res_list))> |
>
>Wyjście
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
Znajdź indeks elementu za pomocą biblioteki numpy
Ten program korzysta z biblioteka numpy aby przekonwertować daną listę na tablicę, znajduje indeksy danej wartości w tablicy i konwertuje wynik tablica numpy powrót do listy. Na koniec drukuje listę indeksów.
Python3
szary kod
import> numpy as np> test_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # convert the list to a numpy array> test_array> => np.array(test_list)> # find the indices of the value 3 in the array> res_array> => np.where(test_array> => => 3> )[> 0> ]> # convert the numpy array back to a list> res_list> => list> (res_array)> # printing resultant list> print> (> 'New indices list : '> +> str> (res_list))> |
>
>
WYJŚCIE:
New indices list : [1, 3]>
Złożoność czasowa: O(n), gdzie n jest długością listy wejściowej.
Przestrzeń pomocnicza: O(n), ponieważ tworzy nową tablicę numpy o tej samej długości co lista wejściowa.
Znajdź indeks elementu za pomocą pętli for
Zainicjuj pustą listę o nazwie res_list, aby przechowywać indeksy wartości docelowych. Wykonaj iterację po każdym elemencie listy wejściowej test_list za pomocą pętli for. Jeśli bieżący element odpowiada wartości docelowej, dołącz jego indeks do listy res_list. Po zakończeniu pętli , zwróć listę res_list jako wynik.
Python3
# initializing list> test_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # printing initial list> print> (> 'Original list: '> +> str> (test_list))> # using a for loop to find indices for 3> res_list> => []> for> i> in> range> (> len> (test_list)):> > if> test_list[i]> => => 3> :> > res_list.append(i)> # printing resultant list> print> (> 'New indices list: '> +> str> (res_list))> |
>
>Wyjście
Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>
Złożoność czasowa: O(n) , gdzie n jest długością listy wejściowej lista_testów.
Przestrzeń pomocnicza: O(k) , gdzie k jest liczbą wystąpień wartości docelowej.
Znajdź indeks elementu za pomocą metody list.index() z pętlą while
Zainicjuj pustą listę indeksów, aby przechowywać indeksy danej wartości. Zainicjuj zmienną i na -1. Uruchom pętlę while, która trwa aż do napotkania instrukcji break. Wewnątrz pętli while użyj lista.indeks() metoda znalezienia indeksu danej wartości na liście zaczynając od indeksu i + 1. Jeśli indeks zostanie znaleziony, dołącz go do listy indeksów i zaktualizuj wartość i do znalezionego indeksu. Jeśli indeks nie zostanie znaleziony, przerwa pętla while. Wydrukuj listę indeksów.
Python3
git rebase
# initializing list> my_list> => [> 1> ,> 3> ,> 4> ,> 3> ,> 6> ,> 7> ]> # printing initial list> print> (> 'Original list : '> +> str> (my_list))> # using list.index() method with a while loop to find indices for 3> indexes> => []> i> => -> 1> while> True> :> > try> :> > i> => my_list.index(> 3> , i> +> 1> )> > indexes.append(i)> > except> ValueError:> > break> print> (> 'New indices list : '> +> str> (indexes))> |
>
>Wyjście
Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>
Złożoność czasowa: O(n), Metoda list.index() w najgorszym przypadku ma złożoność czasową O(n), ponieważ musi iterować po liście, aby znaleźć indeks danej wartości. Pętla while również ma złożoność czasową O(n) w najgorszym przypadku, ponieważ musi iterować po liście, aby znaleźć wszystkie wystąpienia danej wartości.
Przestrzeń pomocnicza: O(1), Przestrzeń używana przez listę indeksów i zmienną i jest stała i nie zależy od rozmiaru listy wejściowej, zatem złożoność przestrzeni pomocniczej wynosi O(1).