Samouczek Pythona

Strona główna Pythona Wprowadzenie do Pythona Wprowadzenie do Pythona Składnia Pythona Komentarze w Pythonie Zmienne w Pythonie Typy danych Pythona Liczby w Pythonie Casting w Pythonie Ciągi Pythona Wartości logiczne w Pythonie Operatory Pythona Listy Pythona Krotki Pythona Zestawy Pythona Słowniki Pythona Python, jeśli... w przeciwnym razie Pętle while Pythona Python dla pętli Funkcje Pythona Python Lambda Tablice Pythona Klasy/obiekty Pythona Dziedziczenie Pythona Iteratory Pythona Zakres Pythona Moduły Pythona Daty Pythona Matematyka w Pythonie Python JSON RegEx w Pythonie PIP w Pythonie Python Wypróbuj... Z wyjątkiem Dane wejściowe użytkownika w Pythonie Formatowanie ciągów w Pythonie

Obsługa plików

Obsługa plików Pythona Odczytywanie plików Pythona Zapis/Tworzenie plików w Pythonie Usuń pliki Pythona

Moduły Pythona

Samouczek NumPy Przewodnik po pandzie Samouczek Scipy

Python Matplotlib

Wprowadzenie do biblioteki Matplotlib Matplotlib Rozpocznij Matplotlib Pyplot Matplotlib kreślenie Markery Matplotlib Linia Matplotlib Etykiety Matplotlib Siatka Matplotlib Wykresy podrzędne Matplotlib Rozproszenie Matplotlib Paski Matplotlib Histogramy Matplotlib Wykresy kołowe Matplotlib

Nauczanie maszynowe

Pierwsze kroki Tryb średniej mediany Odchylenie standardowe Percentyl Dystrybucja danych Normalna dystrybucja danych Wykres punktowy Regresja liniowa Regresja wielomianowa Regresja wielokrotna Skala Trenuj/Test Drzewo decyzyjne

Python MySQL

Rozpocznij MySQL Tworzenie bazy danych MySQL Utwórz tabelę MySQL Wstaw MySQL Wybór MySQL MySQL Gdzie Zamów MySQL według Usuń MySQL Tabela upuszczania MySQL Aktualizacja MySQL Limit MySQL Dołącz do MySQL

Python MongoDB

MongoDB Rozpocznij MongoDB Utwórz bazę danych MongoDB Utwórz kolekcję Wstaw MongoDB MongoDB Znajdź Zapytanie MongoDB Sortuj MongoDB Usuń MongoDB MongoDB Drop Collection Aktualizacja MongoDB Limit MongoDB

Odniesienie do Pythona

Przegląd Pythona Wbudowane funkcje Pythona Metody ciągów Pythona Metody listy Pythona Metody słownika Pythona Metody krotek w Pythonie Metody zestawów Pythona Metody plików Pythona Słowa kluczowe w Pythonie Wyjątki Pythona Słownik Pythona

Odniesienie do modułu

Moduł losowy Moduł żądań Moduł statystyk Moduł matematyczny Moduł cMath

Instrukcje Pythona

Usuń duplikaty listy Odwróć ciąg Dodaj dwie liczby

Przykłady Pythona

Przykłady Pythona Kompilator Pythona Ćwiczenia z Pythona Quiz Pythona Certyfikat Pythona

Iteratory Pythona


Iteratory Pythona

Iterator to obiekt, który zawiera policzalną liczbę wartości.

Iterator to obiekt, po którym można iterować, co oznacza, że ​​można przejść przez wszystkie wartości.

Technicznie rzecz biorąc, w Pythonie iterator to obiekt, który implementuje protokół iteratora, który składa się z metod __iter__() i __next__().


Iterator a iterowalny

Listy, krotki, słowniki i zestawy to wszystkie obiekty iterowalne. Są to kontenery iterowalne , z których można uzyskać iterator.

Wszystkie te obiekty mają iter()metodę, która służy do uzyskania iteratora:

Przykład

Zwróć iterator z krotki i wypisz każdą wartość:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

Nawet łańcuchy są obiektami iterowalnymi i mogą zwracać iterator:

Przykład

Łańcuchy to również obiekty iterowalne, zawierające sekwencję znaków:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

Pętla przez iterator

Możemy również użyć forpętli do iteracji przez obiekt iterowalny:

Przykład

Powtórz wartości krotki:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

Przykład

Powtórz znaki ciągu:

mystr = "banana"

for x in mystr:
  print(x)

Pętla forfaktycznie tworzy obiekt iteratora i wykonuje metodę next() dla każdej pętli.



Utwórz iterator

Aby stworzyć obiekt/klasę jako iterator, musisz zaimplementować metody __iter__()i __next__()do swojego obiektu.

Jak dowiedziałeś się w rozdziale Klasy/Obiekty Pythona , wszystkie klasy mają funkcję o nazwie __init__(), która umożliwia inicjalizację podczas tworzenia obiektu.

Metoda __iter__()działa podobnie, możesz wykonywać operacje (inicjowanie itp.), ale zawsze musi zwracać sam obiekt iteratora.

Metoda __next__()pozwala również na wykonywanie operacji i musi zwrócić następny element w sekwencji.

Przykład

Utwórz iterator, który zwraca liczby, zaczynając od 1, a każda sekwencja zwiększy się o jeden (zwracając 1,2,3,4,5 itd.):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

StopIteracja

Powyższy przykład byłby kontynuowany w nieskończoność, jeśli masz wystarczająco dużo instrukcji next() lub jeśli został użyty w forpętli.

Aby zapobiec ciągnięciu się iteracji w nieskończoność, możemy użyć StopIterationinstrukcji.

W __next__()metodzie możemy dodać warunek kończący, aby zgłosić błąd, jeśli iteracja zostanie wykonana określoną liczbę razy:

Przykład

Zatrzymaj się po 20 iteracjach:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)