Výukový program Python

Python HOME Úvod do Pythonu Začínáme s Pythonem Syntaxe Pythonu Komentáře Pythonu Proměnné Pythonu Datové typy Pythonu Python čísla Python Casting Python řetězce Python Booleans Operátoři Pythonu Seznamy Pythonu Python n-tice Sady Pythonu Slovníky Pythonu Python If...Else Python While Loops Python pro smyčky Funkce Pythonu Python Lambda Pole Python Třídy/objekty Pythonu Dědičnost Pythonu Iterátory Pythonu Rozsah Pythonu Moduly Pythonu Data v Pythonu Matematika Pythonu Python JSON Python RegEx Python PIP Zkuste Python... Kromě Vstup uživatele Pythonu Formátování řetězců v Pythonu

Manipulace se soubory

Práce se soubory Python Soubory pro čtení Pythonu Python Zápis/Vytváření souborů Python mazat soubory

Moduly Pythonu

Výukový program NumPy Návod Panda Výukový program Scipy

Python Matplotlib

Úvod do Matplotlib Matplotlib Začínáme Matplotlib Pyplot Vykreslování Matplotlib Markery Matplotlib Linka Matplotlib Štítky Matplotlib Matplotlib Grid Matplotlib Subplots Matplotlib Scatter Bary Matplotlib Histogramy Matplotlib Koláčové grafy Matplotlib

Strojové učení

Začínáme Střední střední režim Standardní odchylka Percentil Distribuce dat Normální distribuce dat Bodový diagram Lineární regrese Polynomiální regrese Vícenásobná regrese Měřítko Vlak/test Rozhodovací strom

Python MySQL

MySQL Začínáme Vytvořit databázi MySQL Vytvořit tabulku MySQL Vložit MySQL Vyberte MySQL Kde MySQL Pořadí MySQL podle Smazat MySQL MySQL Drop Table Aktualizace MySQL Limit MySQL Připojte se k MySQL

Python MongoDB

MongoDB Začněte Vytvořit databázi MongoDB Vytvořit sbírku MongoDB Vložení MongoDB Najít MongoDB Dotaz MongoDB Řazení MongoDB Smazat MongoDB MongoDB Drop Collection Aktualizace MongoDB Limit MongoDB

Reference Pythonu

Přehled Pythonu Vestavěné funkce Pythonu Metody pythonských řetězců Metody seznamu v Pythonu Metody slovníku Python Metody Python Tuple Metody sady Python Metody souborů Python Klíčová slova Pythonu Výjimky v Pythonu Slovník Pythonu

Reference modulu

Náhodný modul Modul požadavků Modul statistiky Matematický modul cMath modul

Jak na to Python

Odebrat duplikáty seznamu Obrátit řetězec Přidejte dvě čísla

Příklady Pythonu

Příklady Pythonu Kompilátor Pythonu Cvičení Python Pythonský kvíz Python certifikát

Iterátory Pythonu


Iterátory Pythonu

Iterátor je objekt, který obsahuje spočítatelný počet hodnot.

Iterátor je objekt, který lze iterovat, což znamená, že můžete procházet všemi hodnotami.

Technicky v Pythonu je iterátor objekt, který implementuje protokol iterátoru, který se skládá z metod __iter__() a __next__().


Iterátor vs Iterovatelný

Seznamy, n-tice, slovníky a množiny jsou všechny iterovatelné objekty. Jsou to iterovatelné kontejnery , ze kterých můžete získat iterátor.

Všechny tyto objekty mají iter()metodu, která se používá k získání iterátoru:

Příklad

Vraťte iterátor z n-tice a vytiskněte každou hodnotu:

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

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

I řetězce jsou iterovatelné objekty a mohou vrátit iterátor:

Příklad

Řetězce jsou také iterovatelné objekty, které obsahují sekvenci znaků:

mystr = "banana"
myit = iter(mystr)

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

Procházení iterátorem

Můžeme také použít forsmyčku k iteraci přes iterovatelný objekt:

Příklad

Opakujte hodnoty n-tice:

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

for x in mytuple:
  print(x)

Příklad

Opakujte znaky řetězce:

mystr = "banana"

for x in mystr:
  print(x)

Cyklus forve skutečnosti vytvoří objekt iterátoru a pro každý cyklus provede metodu next().



Vytvořte Iterátor

Chcete-li vytvořit objekt/třídu jako iterátor, musíte implementovat metody __iter__()a __next__()do svého objektu.

Jak jste se dozvěděli v kapitole Třídy/Objekty Pythonu , všechny třídy mají funkci nazvanou __init__(), která vám umožňuje provést určitou inicializaci při vytváření objektu.

Metoda __iter__()se chová podobně, můžete provádět operace (inicializaci atd.), ale vždy musí vrátit samotný objekt iterátoru.

Metoda __next__()také umožňuje provádět operace a musí vrátit další položku v pořadí.

Příklad

Vytvořte iterátor, který vrací čísla počínaje 1 a každá sekvence se zvýší o jednu (vrací 1,2,3,4,5 atd.):

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))

StopIteration

Výše uvedený příklad by pokračoval navždy, pokud byste měli dostatek příkazů next() nebo pokud by byl použit ve forsmyčce.

Abychom předešli tomu, že iterace bude pokračovat navždy, můžeme použít StopIterationpříkaz.

V __next__()metodě můžeme přidat ukončovací podmínku pro vyvolání chyby, pokud je iterace provedena zadaným počtem opakování:

Příklad

Zastavit po 20 iteracích:

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)