<br><font size=2 face="sans-serif">Povodne je for-cyklus v Pythone cyklus
iterujuci cez zoznam, t.j. analogia cyklu foreach v Perle.</font>
<br><font size=2 face="sans-serif">Preto sa mi predsa len spaja ten for
aj pri citani suboru vzdy so zoznamom. Nedavno bolo este typicky pytonovske
toto</font>
<br>
<br><font size=2 face="Courier New">lines=f.readlines()<br>
for line in lines:</font>
<br><font size=2 face="Courier New">...</font>
<br>
<br><font size=2 face="sans-serif">teda najprv sa nacital cely subor do
zoznamu a potom sa prechadzal riadok po riadku. Toto moze byt pri niektorych
ulohach vhodne, avsak vseobecne je to blbost.</font>
<br>
<br><font size=2 face="sans-serif">Ked neskor teda bolo napriklad zavedene
toto </font>
<br>
<br><font size=2 face="Courier New">for line in file(&quot;data.txt&quot;):</font>
<br><font size=2 face="Courier New">...</font>
<br>
<br><font size=2 face="sans-serif">t.j. tento cyklus cita riadok po riadku,
je to zasa len odchylka oproti povodnemu cyklu for (ktory iteroval cez
zoznam), takze zaciatocnik v Pythone si musi pamatat rozne vynimky typu:
&quot;for iteruje cez zoznam, ale 'for line in file(&quot;data.txt&quot;)'
cita subor po riadkoch&quot; /inac by si mohol mysliet, ze file(&quot;data.txt&quot;)
vracia zoznam, co nie je pravda, lebo je to ekvivalentne s open(&quot;data.txt&quot;)/
</font>
<br>
<br><font size=2 face="sans-serif">Takze ked to zhrnieme mame teraz takuto
situaciu:</font>
<br>
<br><font size=2 face="Courier New"># cita subor po riadkoch</font>
<br><font size=2 face="Courier New">for line in file('data.txt'):</font>
<br><font size=2 face="Courier New">...</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; </font>
<br><font size=2 face="Courier New"># vrati naprv zoznam riadkov a iteruje
cez tento zoznam &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">for line in file('data.txt').readlines():</font>
<br><font size=2 face="Courier New">...</font>
<br>
<br><font size=2 face="sans-serif">Myslim si, ze citat subor po riadkoch
alebo najprv vsetky riadky nacitat do zoznamu a potom ho prechadzat je
dost velky rozdiel.</font>
<br><font size=2 face="sans-serif">A ked sa obe tieto veci robia cez for
.. zavadza to zbytocny zmatok, nie? &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">Podla mna by bolo ovela jasnejsie zaviest
na citanie po riadkoch:</font>
<br>
<br><font size=2><tt>while line = f.readline():<br>
... <br>
</tt></font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; </font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>&quot;Jan Matejka&quot;
&lt;matejka@cat.cz&gt;</b> </font>
<br><font size=1 face="sans-serif">Sent by: python-bounces@py.cz</font>
<p><font size=1 face="sans-serif">14.11.2006 17:05</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
Konference PyCZ &lt;python@py.cz&gt;</font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td valign=top><font size=1 face="sans-serif">&quot;'Konference PyCZ'&quot;
&lt;python@py.cz&gt;</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td valign=top><font size=1 face="sans-serif">Re: [python] file.next()
(bylo Buducnost Pythonu: lambda, map, &nbsp; &nbsp; &nbsp; &nbsp;filter)</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Ono obecnější řešení je udělat parsovací generátory,
které by šly použít s<br>
čímkoliv file-like jako vstupním prametrem, a nestrkat parsování to objektu<br>
file. Tedy:<br>
<br>
místo<br>
&gt; for line in file(&quot;data.txt&quot;).lines():<br>
&gt; &nbsp;...<br>
<br>
by bylo:<br>
for line in lines(file(&quot;data.txt&quot;)):<br>
 ...<br>
<br>
místo<br>
&gt; #cteni po UTF znacich<br>
&gt; for char in file(&quot;data.txt&quot;).chars():<br>
<br>
by bylo:<br>
for char in chars(file(&quot;data.txt&quot;)):<br>
<br>
atd.<br>
<br>
Výpočetní náročnost by zústala stejná. Generátory mi přijdou jako skvělý<br>
nástroj, škoda že se GvR brání zobecnění do více úrovní zanoření jenž
nabízí<br>
stackless python. <br>
<br>
Jan Matějka<br>
<br>
_______________________________________________<br>
Python mailing list<br>
Python@py.cz<br>
http://www.py.cz/mailman/listinfo/python<br>
</tt></font>
<br><font size=2 face="sans-serif"><br>
Mgr. Ing. Roman MIKLÓŠ <br>
Prvá stavebná sporiteľňa a.s. <br>
Bajkalská 30, P. O. Box 48 <br>
829 48 &nbsp;Bratislava 25 <br>
Tel.: +421/ 2 / 582 31 174 <br>
Fax: +421/ 2 / 582 31 109 <br>
</font>