http://wiki.math.bme.hu/history/Informatika2-2015/Eloadas_Python-Iterator?feed=atom&Informatika2-2015/Eloadas Python-Iterator - Laptörténet2024-03-28T23:41:35ZAz oldal laptörténete a wikibenMediaWiki 1.18.1http://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_Python-Iterator&diff=10559&oldid=prevCsirke: Új oldal, tartalma: „ = Iterátorok = Gondolkoztatok már rajta, hogy hogy működik a ''for'' ciklus? Itt a kitűnő alkalom! Python-ban for ciklussal sokféle elemen végig lehet menni…”2015-03-18T12:13:24Z<p>Új oldal, tartalma: „ = Iterátorok = Gondolkoztatok már rajta, hogy hogy működik a ''for'' ciklus? Itt a kitűnő alkalom! Python-ban for ciklussal sokféle elemen végig lehet menni…”</p>
<p><b>Új lap</b></p><div><br />
<br />
= Iterátorok =<br />
<br />
Gondolkoztatok már rajta, hogy hogy működik a ''for'' ciklus? Itt a kitűnő alkalom!<br />
<br />
Python-ban for ciklussal sokféle elemen végig lehet menni. Néhány példa:<br />
<br />
<python>lista = [5, 6, 7]<br />
<br />
for elem in lista:<br />
print elem<br />
<br />
szotar = {5: 15, 6: 16, 7 : 17}<br />
<br />
for kulcs in szotar:<br />
print kulcs<br />
<br />
file = open("tesztfile.txt", "r")<br />
<br />
for sor in file:<br />
print sor</python><br />
<br />
Mindegyik esetben vannak speciális módszerek amivel ''for'' nélkül is megoldható a dolog, de későbbi dolgokhoz fontos hogy megértsük, hogy hogy működik a dolog. Ehhez kell egy speciális osztály fajta, az iterátor. Itt van, hogy hogy néz ki ugyanaz a kód iterátorral és for-ral:<br />
<br />
<wikiframe width="950" height="600" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=l+%3D+%5B5,+6,+7%5D%0D%0A%0D%0A%23+for-ral%0D%0Afor+elem+in+l%3A%0D%0A++++print+elem%0D%0A%0D%0A%23+Iterator-ral%0D%0Aiterator+%3D+iter(l)%0D%0Atry%3A%0D%0A++++while+True%3A%0D%0A++++++++elem+%3D+iterator.next()%0D%0A++++++++print+elem%0D%0Aexcept+StopIteration%3A%0D%0A++++pass&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=400&codeDivHeight=400"/><br />
[http://pythontutor.com/visualize.html#code=l+%3D+%5B5,+6,+7%5D%0D%0A%0D%0A%23+for-ral%0D%0Afor+elem+in+l%3A%0D%0A++++print+elem%0D%0A%0D%0A%23+Iterator-ral%0D%0Aiterator+%3D+iter(l)%0D%0Atry%3A%0D%0A++++while+True%3A%0D%0A++++++++elem+%3D+iterator.next()%0D%0A++++++++print+elem%0D%0Aexcept+StopIteration%3A%0D%0A++++pass&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0 link]<br />
<br />
Azért lehet néha szükség iterátorok használatára a ''for'' ciklus helyett, ha valami bonyolultabbat szeretnénk csinálni. Pl. félbehagyni a ciklust, és onnan folytatni<br />
<br />
<wikiframe width="1000" height="800" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=import+itertools%0A%0Al+%3D+%5B11,+12,+13,+14%5D%0Ait+%3D+iter(l)%0Aprint+it.next()%0Aprint+it.next()%0A%0Ait,+it2+%3D+itertools.tee(it)%0A%0Atry%3A%0A++++while+True%3A%0A++++++++print+it.next()%0Aexcept+StopIteration%3A%0A++++pass%0A%0Aprint+%22Most+it2-vel%22%0A%0Atry%3A%0A++++while+True%3A%0A++++++++print+it2.next()%0Aexcept+StopIteration%3A%0A++++pass&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=400&codeDivHeight=600"/><br />
[http://pythontutor.com/visualize.html#code=import+itertools%0A%0Al+%3D+%5B11,+12,+13,+14%5D%0Ait+%3D+iter(l)%0Aprint+it.next()%0Aprint+it.next()%0A%0Ait,+it2+%3D+itertools.tee(it)%0A%0Atry%3A%0A++++while+True%3A%0A++++++++print+it.next()%0Aexcept+StopIteration%3A%0A++++pass%0A%0Aprint+%22Most+it2-vel%22%0A%0Atry%3A%0A++++while+True%3A%0A++++++++print+it2.next()%0Aexcept+StopIteration%3A%0A++++pass&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0 link]</div>Csirke