<br />
 MICH&Aacute;LEK Jan Mgr. napsal<br />
 &gt;<br />
 &gt; [...]<br />
 &gt; <br />
 &gt; Jde tedy to nějak vymyslet, abych udělal ten gener&aacute;tor, kterej si bude pamatovat <br />
&gt; jen aktu&aacute;ln&iacute; hodnoty x a y, aniž bych musel použ&iacute;t smyčku?? <br />
<br />
&gt; Ta věc [něco for něco] (menuje se to gener&aacute;tor pole??) <br />
 <br />
Anglicky se to jmenuje "list comprehension", čili "skl&aacute;dač seznamu".<br />
V překladu Dive Into Python 3 jsem ve spolupr&aacute;ci se zdej&scaron;&iacute;mi borci dospěl<br />
k česk&eacute;mu...<br />
<br />
<font color="#993300">5.3 GENER&Aacute;TOROV&Aacute; NOTACE SEZNAMU<br />
Gener&aacute;torov&aacute; notace seznamu (anglicky list comprehension [list<br />
komprihen&scaron;n]) umožňuje stručn&yacute; z&aacute;pis vytvořen&iacute; seznamu z jin&eacute;ho<br />
seznamu aplikov&aacute;n&iacute;m funkce na v&scaron;echny prvky zdrojov&eacute;ho seznamu.<br />
(Pozn&aacute;mka překladatele: Pojem &bdquo;list comprehension&ldquo; je zn&aacute;m z<br />
deklarativn&iacute;ch jazyků a m&aacute; charakter syntaktick&eacute; konstrukce. V jazyce<br />
Python se &bdquo;vnitřku&ldquo; deklarativn&iacute;ho z&aacute;pisu podob&aacute; gener&aacute;torov&yacute; v&yacute;raz.<br />
T&iacute;mto způsobem byl odvozen česk&yacute; pojem &bdquo;gener&aacute;torov&aacute; notace&ldquo;.<br />
Někdy je pojem &bdquo;list comprehension&ldquo; použit v procedur&aacute;ln&iacute;m,<br />
dynamick&eacute;m smyslu. V takov&eacute; situaci můžeme uvažovat o pojmu<br />
&bdquo;gener&aacute;tor seznamu&ldquo;. Pokud se bav&iacute;me o jeho v&yacute;sledku, můžeme<br />
uvažovat i o pojmu &bdquo;generovan&yacute; seznam&ldquo;. Vzhledem k tomu, že<br />
zaveden&yacute; česk&yacute; pojem pro tuto konstrukci asi neexistuje &mdash;<br />
studentům př&iacute;slu&scaron;n&yacute;ch oborů vysok&yacute;ch &scaron;kol přijde po kr&aacute;tk&eacute; <br />
chv&iacute;li anglick&yacute; pojem srozumiteln&yacute; &mdash;, budu volněji<br />
použ&iacute;vat některou z uveden&yacute;ch variant. Někdy budu poněkud <br />
dlouh&yacute; pojem &bdquo;gener&aacute;torov&aacute; notace seznamu&ldquo;<br />
zkracovat. Krit&eacute;riem volby bude dobr&aacute; srozumitelnost.)<br />
</font><br />
Podobně existuje "dictionary comprehension" a "set comprehension".<br />
<br />
&gt; Nebo to jde nějak občůrat (např&iacute;klad použ&iacute;t m&iacute;sto range() gener&aacute;tor)??<br />
<br />
Už jsem to pos&iacute;lal jako reakci na odpověď Jirky, ale ono Ctrl-V zase tolik<br />
pr&aacute;ce ned&aacute; ;)<br />
<br />
g = ((a,b) for a in xrange(1,10,2) for b in xrange(5,20,5))<br />
<br />
def genFunc(x, y):<br />
&nbsp;&nbsp;&nbsp; for a in xrange(1, x, 2):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for b in xrange(5, y, 5):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yield (a, b)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
for t in g:<br />
&nbsp;&nbsp;&nbsp; print t,<br />
&nbsp;&nbsp;&nbsp; <br />
print&nbsp;&nbsp;&nbsp; <br />
print '-' * 60<br />
<br />
for t in genFunc(10, 20):<br />
&nbsp;&nbsp;&nbsp; print t,<br />
<br />
<br />
Petr<br />
<br />