Python- tutoriaal

Python TUIS Python Intro Python Begin Python-sintaksis Python-kommentaar Python veranderlikes Python-datatipes Python-nommers Python Casting Python Strings Python Booleans Python-operateurs Python-lyste Python Tuples Python-stelle Python Woordeboeke Python As...Anders Python While Loops Python vir lusse Python-funksies Python Lambda Python-skikkings Python-klasse/-voorwerpe Python Erfenis Python Iterators Python-omvang Python-modules Python-datums Python Wiskunde Python JSON Python RegEx Python PIP Python Probeer ... Behalwe Python-gebruikersinvoer Python String Formatering

Lêerhantering

Python-lêerhantering Python Lees lêers Python Skryf/skep lêers Python verwyder lêers

Python-modules

NumPy Tutoriaal Panda Walkthrough Scipy Tutoriaal

Python Matplotlib

Matplotlib Intro Matplotlib Begin Matplotlib Pyplot Matplotlib Plotte Matplotlib Merkers Matplotlib-lyn Matplotlib-etikette Matplotlib-rooster Matplotlib Subplotte Matplotlib Scatter Matplotlib Bars Matplotlib Histogramme Matplotlib sirkeldiagramme

Masjienleer

Aan die gang kom Gemiddelde mediaanmodus Standaard afwyking Persentiel Dataverspreiding Normale dataverspreiding Strooi plot Lineêre regressie Polinoomregressie Meervoudige regressie Skaal Trein/toets Besluitboom

Python MySQL

MySQL Begin MySQL Skep databasis MySQL Skep tabel MySQL-insetsel MySQL Kies MySQL Waar MySQL Bestel deur MySQL verwyder MySQL Drop Table MySQL-opdatering MySQL-limiet MySQL Sluit aan

Python MongoDB

MongoDB Begin MongoDB Skep databasis MongoDB Skep versameling MongoDB-insetsel MongoDB Vind MongoDB-navraag MongoDB Sorteer MongoDB verwyder MongoDB Drop Collection MongoDB-opdatering MongoDB-limiet

Python-verwysing

Python Oorsig Python ingeboude funksies Python-stringmetodes Python Lys Metodes Python Woordeboek Metodes Python Tuple Metodes Python Stel metodes Python-lêermetodes Python sleutelwoorde Python-uitsonderings Python Woordelys

Moduleverwysing

Ewekansige module Versoeke Module Statistiek Module Wiskunde Module cMath-module

Python Hoe om

Verwyder lys duplikate Draai 'n snaar om Voeg twee getalle by

Python voorbeelde

Python voorbeelde Python-samesteller Python-oefeninge Python Vasvra Python-sertifikaat

Python Iterators


Python Iterators

'n Iterator is 'n voorwerp wat 'n telbare aantal waardes bevat.

'n Iterator is 'n voorwerp waarop herhaal kan word, wat beteken dat jy deur al die waardes kan beweeg.

Tegnies, in Python, is 'n iterator 'n voorwerp wat die iterator-protokol implementeer, wat bestaan ​​uit die metodes __iter__() en __next__().


Iterator vs Iterable

Lyste, tupels, woordeboeke en stelle is almal herhaalbare voorwerpe. Dit is herhaalbare houers waaruit u 'n iterator kan kry.

Al hierdie voorwerpe het 'n iter()metode wat gebruik word om 'n iterator te kry:

Voorbeeld

Gee 'n iterator van 'n tupel terug en druk elke waarde:

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

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

Selfs stringe is herhaalbare voorwerpe en kan 'n iterator terugstuur:

Voorbeeld

Strings is ook herhaalbare voorwerpe, wat 'n reeks karakters bevat:

mystr = "banana"
myit = iter(mystr)

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

Loop deur 'n Iterator

Ons kan ook 'n forlus gebruik om deur 'n herhaalbare voorwerp te herhaal:

Voorbeeld

Herhaal die waardes van 'n tupel:

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

for x in mytuple:
  print(x)

Voorbeeld

Herhaal die karakters van 'n string:

mystr = "banana"

for x in mystr:
  print(x)

Die forlus skep eintlik 'n iterator-objek en voer die volgende () metode vir elke lus uit.



Skep 'n Iterator

Om 'n objek/klas as 'n iterator te skep, moet jy die metodes __iter__()en __next__()na jou objek implementeer.

Soos jy in die Python Classes/Objects- hoofstuk geleer het, het alle klasse 'n funksie genaamd __init__(), wat jou toelaat om 'n mate van inisiasie te doen wanneer die voorwerp geskep word.

Die __iter__()metode tree soortgelyk op, jy kan bewerkings doen (initialisering ens.), maar moet altyd die iterator-voorwerp self terugstuur.

Die __next__()metode laat jou ook toe om bewerkings te doen, en moet die volgende item in die volgorde terugstuur.

Voorbeeld

Skep 'n iterator wat nommers terugstuur, wat begin met 1, en elke ry sal met een vermeerder (wat 1,2,3,4,5 ens. gee):

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

StopIterasie

Die voorbeeld hierbo sal vir ewig voortduur as jy genoeg volgende()-stellings het, of as dit in 'n forlus gebruik is.

Om te verhoed dat die herhaling vir ewig voortduur, kan ons die StopIterationstelling gebruik.

In die __next__()metode kan ons 'n beëindigende voorwaarde byvoeg om 'n fout op te wek as die iterasie 'n gespesifiseerde aantal kere gedoen word:

Voorbeeld

Stop na 20 herhalings:

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)