Znajdowanie indeksu, nie tylko wartości
Śledzenie pozycji za pomocą enumerate
Znajdowanie indeksu, nie tylko wartości to bezpłatna lekcja Coding Interview Prep na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Coding Interview Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Coding Interview Prep zawiera 4 lekcji w sumie.
Pozycje mają znaczenie
Często odpowiedzią nie jest wartość, lecz informacja, gdzie się ona znajduje. Zadania konkursowe często wymagają indeksu 1-based lub 0-based, dlatego należy śledzić pozycje.
a = [4, 1, 7, 3]Znajdź za pomocą .index()
a.index(x) zwraca pozycję pierwszego dopasowania. Jest szybkie do zapisania, ale przeszukuje elementy od lewej do prawej w czasie O(n).
pos = a.index(7) # 2Brakujące wartości powodują błędy
Jeśli wartości nie ma, .index() zgłasza ValueError, czyli powoduje błąd w czasie działania. Gdy nie ma pewności, należy najpierw sprawdzić przynależność elementu.
if x in a:
pos = a.index(x)Iteruj za pomocą enumerate
enumerate przekazuje w każdym kroku jednocześnie indeks i wartość — to przejrzysty sposób śledzenia pozycji podczas skanowania.
for i, v in enumerate(a):
print(i, v)Rozpocznij enumerate od jedynki
Wiele systemów sprawdzających wymaga pozycji 1-based. Przekaż start=1 do enumerate, aby pierwszy indeks wynosił 1, zgodnie z treścią zadania.
for i, v in enumerate(a, start=1):
...Indeks maksimum
Aby znaleźć położenie maksimum, należy skanować tablicę i zapamiętywać najlepszy indeks, ponieważ samo max(a) zwraca tylko wartość.
best = 0
for i, v in enumerate(a):
if v > a[best]:
best = iSprytne argmax
Zwięzła sztuczka: połącz każdy indeks z jego wartością i wybierz maksimum według wartości. range bezpośrednio podaje pozycję.
best = max(range(len(a)), key=lambda i: a[i])Zbierz wszystkie pasujące indeksy
Potrzebują Państwo każdej pozycji danej wartości? Wyrażenie listowe oparte na enumerate zbiera wszystkie dopasowania w jednym wierszu.
idx = [i for i, v in enumerate(a) if v == 7]Mapuj wartość na indeks
W przypadku powtarzających się wyszukiwań należy raz zbudować dict mapujący wartości na indeksy, zamieniając każde kolejne wyszukiwanie w operację O(1).
where = {v: i for i, v in enumerate(a)}Duplikaty wymagają uwagi
A dict zachowuje tylko ostatnie wystąpienie danej wartości. Gdy duplikaty mają znaczenie, należy użyć listy dla każdego klucza albo enumerate.
where = {}
for i, v in enumerate(a):
where.setdefault(v, []).append(i)Konwertuj między bazami indeksów
Należy pamiętać o bazie: jeśli zapisano indeks 0-based, a trzeba wypisać indeks 1-based, należy dodać jeden. Mieszanie baz to pułapka prowadząca do cichej błędnej odpowiedzi.
print(pos + 1) # 0-based to 1-basedSzybkie sprawdzenie
Chcą Państwo uzyskać pozycje 1-based podczas iterowania. Co należy napisać?
Podsumowanie: śledzenie pozycji
Można teraz znajdować pojedyncze indeksy, indeks maksimum i wszystkie indeksy, a także bezpiecznie mapować wartości na pozycje. enumerate to niezawodne narzędzie śledzenia pozycji. 🎯
Ucz się Coding Interview Prep dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 90
- Lekcje
- 360
Często zadawane pytania
Czy lekcja „Znajdowanie indeksu, nie tylko wartości” jest bezpłatna?
Tak — pełny tekst „Znajdowanie indeksu, nie tylko wartości” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Coding Interview Prep, przejdź na CoddyKit PRO. Kurs Coding Interview Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Znajdowanie indeksu, nie tylko wartości”?
Śledzenie pozycji za pomocą enumerate Ćwiczysz Coding Interview Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Coding Interview Prep?
Nie wymagamy żadnego doświadczenia. Coding Interview Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Znajdowanie indeksu, nie tylko wartości”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Coding Interview Prep?
Tak. Każda lekcja Coding Interview Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Listy, indeksowanie i wycinanie dla CP
- Szybkie tworzenie tablic za pomocą comprehension
- Min, max, suma i sumy narastające
- Znajdowanie indeksu, nie tylko wartości