Python Enumerate: wyjaśnienie z przykładami

Praca z listami i innymi iterowalnymi obiektami jest częstym zadaniem w programowaniu w Pythonie . Czasami może być konieczne przechodzenie przez te iterowalne pętle, jednocześnie śledząc indeks lub liczbę bieżącego elementu. W tym miejscu z pomocą przychodzi wbudowana w Pythona funkcja enumerate().

Funkcja enumerate() w Pythonie zapewnia wygodny sposób uzyskiwania dostępu zarówno do indeksu elementu, jak i do samego elementu, gdy przeglądasz listę lub dowolny obiekt iterowalny.

Python Enumerate: wyjaśnienie z przykładami

Ta funkcja sprawia, że ​​Twój kod jest bardziej Pythoniczny , czytelny i wydajny. Pozwala przeglądać elementy w pętli i pobierać zarówno ich indeks, jak i wartość. Zamiast ręcznie inicjować i zwiększać licznik w pętli, możesz polegać na enumerate(), która zrobi to za Ciebie.

W tym artykule dowiesz się o wbudowanej funkcji Pythona enumerate(), jej znaczeniu w kodzie Pythona i przypadkach jej użycia.

Wejdźmy w to!

Spis treści

Co to jest funkcja wyliczania Pythona?

Wyobraź sobie, że pracujesz ze strukturą danych listy i chcesz coś zrobić z każdym elementem, ale musisz też znać pozycję elementu na liście.

Bez Pythona enumerate() możesz zdecydować się na użycie zmiennej licznika, którą zwiększasz w każdej iteracji pętli. Ale takie podejście może być podatne na błędy i nie jest zbyt „pythoniczne”.

Enumerate to wbudowana funkcja w Pythonie, która umożliwia iterację po iterowalnych obiektach, jednocześnie śledząc indeks bieżącego elementu.

Teraz, gdy już wiesz, czym jest funkcja enumerate() w Pythonie, przejdźmy do składni funkcji enumerate() w następnym podrozdziale!

Jaka jest składnia funkcji wyliczania Pythona?

Składnia funkcji określa, w jaki sposób należy jej używać w kodzie, w tym jakie argumenty przyjmuje i co zwraca.

Python Enumerate: wyjaśnienie z przykładami

Funkcja enumerate () ma następującą składnię:

enumerate(, start=0)
  • : Jest to wymagany parametr i może to być dowolny iterowalny Python, taki jak lista lub krotka.

  • start : Ten drugi parametr jest parametrem opcjonalnym, który określa początkową wartość licznika. Domyślnie jest ustawiony na 0.

Wartość zwracana przez funkcję enumerate() jest obiektem enumerate, który jest iteratorem posiadającym pary (indeks, element) dla każdego elementu w danej iterowalności.

Możesz użyć tego iteratora w pętli for, aby uzyskać jednocześnie dostęp zarówno do indeksu, jak i elementu.

Poniższy przykład pokazuje, jak można użyć funkcji enumerate() z listą:

fruits = ['apple', 'banana', 'cherry']

for index, item in enumerate(fruits):
    print(index, item)

W tym przykładzie enumerate() przechodzi przez obiekty enumerate, tj. listę owoców , i przypisuje indeks do każdego elementu, zaczynając od 0.

Następnie pętla for rozpakowuje indeks i element z wyliczonego obiektu. Umożliwia to wykonywanie operacji na podstawie zarówno indeksu, jak i wartości elementu.

Używamy funkcji print, aby wydrukować indeks i element na ekranie. Wyjście kodu pokazano na poniższym obrazku:

Python Enumerate: wyjaśnienie z przykładami

Na wyjściu widać, że początkowym indeksem jest 0. Jest to domyślna wartość indeksu przypisywana automatycznie przez interpreter Pythona.

Możesz jednak określić inną wartość początkową dla licznika, podając opcjonalny parametr start , jak pokazano w poniższym kodzie:

for index, item in enumerate(fruits, start=1):
    print(index, item)

Wynik będzie podobny do powyższego. Jedyną różnicą będzie to, że indeks zaczyna się teraz od 1.

Python Enumerate: wyjaśnienie z przykładami

Teraz masz już pojęcie o składni funkcji enumerate() w Pythonie. Ale, jak w przypadku każdego narzędzia, ważne jest, aby wiedzieć, kiedy i gdzie go używać.

Dlatego w następnej sekcji przyjrzymy się kilku typowym przypadkom użycia funkcji enumerate()!

5 Przypadki użycia funkcji enumerate w Pythonie

Funkcja enumerate w Pythonie jest szeroko stosowana w scenariuszach, w których zarówno indeks, jak i wartość obiektu iterowalnego mają znaczenie dla programisty.

Poniżej wymieniliśmy niektóre typowe przypadki użycia funkcji wyliczających w Pythonie.

1. Jak używać Enumerate z listami Pythona

W Pythonie lista jest wbudowaną strukturą danych, która umożliwia przechowywanie wielu elementów w jednej zmiennej. Pomyśl o liście jako o pojemniku, w którym możesz umieścić różne przedmioty, a one zachowają swoją kolejność.

Funkcji enumerate() można używać na listach na różne sposoby, na przykład:

A. Dostęp do elementów listy i ich indeksów za pomocą Pythona Enumerate

Jednym z najczęstszych przypadków użycia funkcji enumerate() jest konieczność uzyskania dostępu zarówno do elementów listy, jak i do ich indeksów. Enumerate pozwala to zrobić w czysty i wydajny sposób.

Poniżej znajduje się przykład uzyskiwania dostępu do elementów listy i ich indeksów:

fruits = ['apple', 'banana', 'mango', 'grape', 'orange']
for index, fruit in enumerate(fruits):
    print(f"At index {index}, the fruit is {fruit}.")

Dane wyjściowe tego kodu przedstawiono na poniższym obrazku:

Python Enumerate: wyjaśnienie z przykładami

B. Modyfikowanie elementów listy za pomocą Pythona Enumerate

Kiedy musisz zmodyfikować elementy listy na podstawie ich indeksu, enumerate() jest doskonałym narzędziem. Możesz uzyskać dostęp do indeksu w pętli i użyć go do zmodyfikowania listy.

Poniżej znajduje się przykład modyfikowania elementów listy za pomocą funkcji enumerate:

numbers = [1, 2, 3, 4, 5]

for i, num in enumerate(numbers):
    numbers[i] = num * 2

Ten kod Pythona tworzy listę liczb od 1 do 5. Następnie używa pętli for i funkcji enumerate() do iteracji po liście.

Dla każdej iteracji mnoży bieżącą liczbę (liczba) przez 2 i ponownie przypisuje ją do tej samej pozycji na liście (liczby [i]).

W rezultacie każda liczba na oryginalnej liście jest podwojona, jak pokazano na poniższym obrazku:

Python Enumerate: wyjaśnienie z przykładami

C. Porównywanie elementów na dwóch listach za pomocą Pythona Enumerate

Jeśli porównujesz elementy na dwóch różnych listach, enumerate() może dostarczyć indeks potrzebny do uzyskania dostępu do elementów na obu listach w tym samym czasie.

Poniżej znajduje się przykład użycia funkcji enumerate do porównania elementów na dwóch listach:

list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 0, 5]
for i, value in enumerate(list1):
    if value != list2[i]:
        print(f"Difference at index {i}: {value} (list1) vs {list2[i]} (list2)")

W tym kodzie najpierw definiujemy dwie listy, list1 i list2. Następnie przechodzimy przez listę1, używając pętli for z funkcją enumerate(), która dostarcza indeks (i) i wartość każdego elementu.

Jeśli bieżący element na liście 1 nie pasuje do odpowiedniego elementu na liście 2, drukuje indeks różnicy i różne wartości z obu list.

Wynik tego kodu pokazano poniżej:

Python Enumerate: wyjaśnienie z przykładami

2. Jak używać Enumerate z krotkami Pythona

Krotka w Pythonie to uporządkowany zbiór elementów, podobny do listy. Jedyna różnica polega na tym, że krotka jest niezmienna, co oznacza, że ​​nie można zmienić jej zawartości po utworzeniu.

Poniżej przedstawiono niektóre przypadki, w których można użyć enumerate z krotkami Pythona.

A. Używanie Pythona Enumerate() do znajdowania elementu w krotce

Gdy mamy do czynienia z krotkami w Pythonie, często trzeba sprawdzić, czy element istnieje w krotce.

Poniższy przykładowy kod demonstruje użycie enumerate do znalezienia elementów w krotce:

fruits = ('apple', 'banana', 'mango', 'grape', 'orange')
for i, fruit in enumerate(fruits):
    if fruit == 'mango':
        print(f"'mango' found at position {i}")

Ten kod wypisze „mango” znalezione na pozycji 2”, ponieważ „mango” znajduje się na indeksie 2 w krotce.

Python Enumerate: wyjaśnienie z przykładami

B. Używanie Pythona Enumerate() do tworzenia słownika z krotki

Jeśli masz krotkę i chcesz przekształcić ją w słownik, funkcja enumerate() Pythona może być Twoim podstawowym narzędziem.

Przykładowy kod pokazuje, jak można utworzyć słownik z krotki za pomocą enumerate:

fruits = ('apple', 'banana', 'mango', 'grape', 'orange')

fruit_dict = {i: fruit for i, fruit in enumerate(fruits)}
print(fruit_dict)

Ten kod wydrukuje słownik, w którym klucze to indeksy, a wartości to elementy z krotki.

Python Enumerate: wyjaśnienie z przykładami

3. Jak używać Enumerate ze słownikami Pythona

W Pythonie słownik jest zmiennym, nieuporządkowanym zbiorem par klucz-wartość , w którym każdy klucz musi być unikalny. Pomyśl o tym jak o prawdziwym słowniku: wyszukujesz słowo (klucz) i uzyskujesz jego definicję (wartość).

Poniżej przedstawiono niektóre przypadki, w których można użyć enumerate ze słownikami Pythona:

A. Zapętlanie kluczy i wartości słownika

Możesz użyć funkcji enumerate() do przeglądania kluczy i wartości słownika.

Funkcja enumerate() dodaje licznik do obiektu iterowalnego (takiego jak słowniki), umożliwiając dostęp do bieżącej wartości indeksu.

Przykład funkcji enumerate ze słownikiem Pythona podano poniżej:

example_dict = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
for i, k in enumerate(example_dict):
    print(i, k)

W tym kodzie Pythona najpierw tworzymy słownik o nazwie example_dict. Następnie używamy funkcji enumerate() do iteracji po słowniku.

Dla każdej iteracji wypisujemy liczbę pętli (podaną przez i i zaczynającą się od 0) oraz bieżący klucz (czyli k) ze słownika.

Python Enumerate: wyjaśnienie z przykładami

B. Połączenie Pythona Enumerate z funkcją Items

Możesz także uzyskać dostęp zarówno do kluczy, jak i wartości słownika za pomocą funkcji items() razem z enumerate() . Funkcja items () zwraca iterowalną kolekcję par klucz-wartość w postaci krotek.

Poniższy przykład pokazuje, w jaki sposób można użyć funkcji items() z enumerate() :

example_dict = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
for i, (k, v) in enumerate(example_dict.items()):
    print(i, k, v)

W tym kodzie tworzymy słownik o nazwie example_dict , a następnie używamy funkcji enumerate() do iteracji par klucz-wartość słownika. Podczas każdej iteracji drukujemy indeks pętli „i”, bieżący klucz „k” i odpowiadającą mu wartość „v”.

Python Enumerate: wyjaśnienie z przykładami

Masz teraz solidne zrozumienie, jak używać funkcji enumerate() Pythona w niektórych typowych scenariuszach. Ale enumerate() ma jeszcze więcej do zaoferowania.

Przyjrzyjmy się niektórym zaawansowanym przypadkom użycia związanym z enumerate() w następnej sekcji!

3 zaawansowane przypadki użycia Pythona Enumerate

W tej sekcji wyjdziemy poza podstawy i przyjrzymy się niektórym zaawansowanym przypadkom użycia funkcji enumerate w Pythonie.

Omówimy następujące przypadki użycia:

  1. Używanie Enumerate z klasami Pythona

  2. Używanie Enumerate z klasami Enum

  3. Używanie Enumerate do odwracania zamówień

Wejdźmy w to!

1. Używanie Enumerate z klasami Pythona

Podczas swojej przygody z programowaniem w Pythonie możesz natknąć się na sytuacje, w których chcesz użyć enumerate z niestandardowymi klasami.

Aby to osiągnąć, twoja klasa powinna zaimplementować metodę iter() , która umożliwia iterację.

Rozważmy klasę Color , która przechowuje nazwy kolorów i powiązane z nimi wartości szesnastkowe:

class Color:
    def __init__(self, colors: dict):
        self.colors = colors

    def __iter__(self):
        return iter(self.colors.items())

colors = Color({"red": "#FF0000", "green": "#00FF00", "blue": "#0000FF"})

for index, (name, hex_value) in enumerate(colors):
    print(f"{index}: {name} => {hex_value}")

W tym kodzie tworzymy klasę Color, która pobiera słownik nazw kolorów i odpowiadających im wartości szesnastkowych.

Kiedy używasz enumerate() w pętli, udostępnia ona indeks wraz z każdą parą klucz-wartość. Pozwala to na wydrukowanie indeksu, nazwy koloru i jego wartości szesnastkowej w sformatowanym łańcuchu.

Python Enumerate: wyjaśnienie z przykładami

2. Używanie Pythona Enumerate z klasami Enum

Python ma wbudowaną klasę Enum , która umożliwia tworzenie typów wyliczeniowych z automatycznie przypisywanymi wartościami całkowitymi.

Na przykład spójrz na następujący kod:

from enum import Enum, auto

class Direction(Enum):
    NORTH = auto()
    EAST = auto()
    SOUTH = auto()
    WEST = auto()

for index, direction in enumerate(Direction):
    print(f"{index}: {direction.name} => {direction.value}")

W tym skrypcie definiujemy Kierunek wyliczenia z czterema elementami (PÓŁNOC, WSCHÓD, POŁUDNIE i ZACHÓD) za pomocą modułu enum Pythona. Funkcja auto() przypisuje automatycznie wartość każdemu członowi.

Kiedy używasz enumerate() w pętli, udostępnia ona indeks wraz z każdym elementem wyliczenia. Pozwala to wydrukować indeks, nazwę członka i jego automatycznie przypisaną wartość w sformatowanym ciągu.

Dane wyjściowe tego kodu przedstawiono na poniższym obrazku:

Python Enumerate: wyjaśnienie z przykładami

3. Używanie Pythona Enumerate do odwracania kolejności

W niektórych przypadkach możesz chcieć wyliczyć elementy w odwrotnej kolejności. Możesz to osiągnąć, używając wbudowanej funkcji reversed() w połączeniu z enumerate() .

Poniższy przykład ilustruje wyliczanie elementów w odwrotnej kolejności:

my_list = ["apple", "banana", "cherry"]

for index, item in enumerate(reversed(my_list)):
    print(f"{index}: {item}")

W tym kodzie iterujemy nad odwróconą wersją my_list za pomocą enumerate(). Zapewnia to indeks i pozycję z odwróconej listy w każdej iteracji. Pozwala wydrukować indeks i element w sformatowanym ciągu.

Python Enumerate: wyjaśnienie z przykładami

Funkcja reversed() nie zmodyfikuje oryginalnej sekwencji; tworzy nowy iterator, który przedstawia elementy w odwrotnej kolejności.

Aby dowiedzieć się więcej o funkcjach w Pythonie, obejrzyj poniższy film:

Końcowe przemyślenia

Kontynuując swoją przygodę z Pythonem, opanowanie funkcji enumerate() jest koniecznością. To narzędzie poprawiające czytelność i wydajność kodu.

Używając enumerate(), możesz bezproblemowo uzyskać dostęp zarówno do indeksu, jak i wartości w swoich pętlach, zmniejszając potrzebę stosowania zmiennych liczników lub indeksowania. Upraszcza twój kod i czyni go bardziej Pythonowym.

Niezależnie od tego, czy przeglądasz listy, krotki, łańcuchy znaków czy słowniki, enumerate() okaże się cennym narzędziem. Dzięki zrozumieniu i ćwiczeniu enumerate() zrobisz znaczący krok w doskonaleniu swoich umiejętności programowania w Pythonie!

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.