<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">Dne 13. Ăşnora 2015 0:55 Radek HolĂ˝ <span dir="ltr"><<a href="mailto:radekholypublic@gmail.com" target="_blank">radekholypublic@gmail.com</a>></span> napsal(a):<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">Dne 11. Ăşnora 2015 10:08 Vladimir Macek <span dir="ltr"><<a href="mailto:macek@sandbox.cz" target="_blank">macek@sandbox.cz</a>></span> napsal(a):<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On 10.2.2015 20:50, Honza Král wrote:<br>
> 2015-02-10 20:36 GMT+01:00 Radek HolĂ˝ <<a href="mailto:radekholypublic@gmail.com" target="_blank">radekholypublic@gmail.com</a>>:<br>
</span><span>>> V Pythonu dÄ›lám skoro 9 let a pořád platĂ­, Ĺľe kdykoliv nÄ›kde<br>
>> narazĂ­m na "reduce", "map" apod. tak mÄ› to vĹľdy zdrží a chvĂ­li mi<br>
>> trvá, neĹľ pochopĂ­m o co jde. List comprehensions se mi ÄŤtou<br>
>> snadnÄ›ji - pĹ™irozenÄ›ji. NehledÄ› na to, Ĺľe ty funkcionálnĂ­<br>
>> záleĹľitosti jsou skoro vĹľdy spojenĂ© s deklaracĂ­ jinak zbyteÄŤnĂ˝ch<br>
>> funkcĂ­ se sloĹľitĂ˝m vĂ˝znamem, nebo ještÄ› komplikovanÄ›jšími lambda<br>
>> funkcemi. KaĹľdopádnÄ› je to prostÄ› otázku vkusu/zvyku... JednĂ­m z<br>
>> problĂ©mĹŻ mĹŻĹľe pro mÄ› bĂ˝t ta prefixová notace. Vypadá to jako Lisp<br>
>> :-)<br>
<br>
</span>Doufám, Ĺľe se shodneme, Ĺľe to je vÄ›c osobnĂ­ch preferencĂ­ a nebudeme si to<br>
navzájem vyÄŤĂ­tat. :-) ZajistĂ© mĹŻĹľu povaĹľovat za elegantnÄ›jší vytáhnout<br>
filtraÄŤnĂ­ nebo transformaÄŤnĂ­ logiku do extra funkce s komentáři a pak jĂ­<br>
pĹ™edhodit do filter/map neĹľ to patlat do třířádkovĂ©ho C-G. PodotĂ˝kám pro<br>
jistotu znovu, Ĺľe používám jak filter/map + zřídka reduce, tak C-G, vĹľdy<br>
podle svĂ©ho citu pro vhodnost. Snažím se dodrĹľovat Zen.<br>
<br>
Kdykoli píšu \, trošku uvnitĹ™ umĹ™u.<br>
<span><br>
<br>
> Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim<br>
> zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen<br>
> obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude<br>
> delat.<br>
<br>
</span>To poslednĂ­ negrokuju. :-) JasnĂ© je snad v Pythonu vše, proto ho máme rádi,<br>
ne? :-)<br>
<span><br>
<br>
>> JeštÄ› mÄ› zarazilo to "stáhneme 10 URL". S tĂ­m mám vĹľdy osobnĂ­<br>
>> problĂ©m. Jakmile nÄ›kdo volá "map", aniĹľ by ho zajĂ­mala návratová<br>
>> hodnota volanĂ© funkce, povaĹľuji to za chybu. NehledÄ› na to, Ĺľe v<br>
>> Pythonu 3 "map" vracĂ­ iterátor, takĹľe se kvĹŻli tomu ještÄ› typicky<br>
>> "map" obaluje do "list"... V tÄ›chto případech vĹľdy preferuji<br>
>> klasickĂ˝ "for" cyklus. Ale opÄ›t je to jen mĹŻj názor.<br>
<br>
</span>Dovoluji si i zde spíše nesouhlasit, zejmĂ©na se slovem typicky.<br>
"PĹ™etypovánĂ­" tohoto typu snad používáme aĹľ tehdy, kdy je to nutnĂ©, ne?<br>
Pokud nÄ›kde dostanu iterátor, je hromada případĹŻ, kdy se elegantnÄ› a<br>
efektivnÄ› pouĹľije přímo.<br>
<span><br></span></blockquote><div><br></div></div></div><div>U toho pĹ™etypovánĂ­ jsem mÄ›l na mysli, kdyĹľ se map (nebo list comprehension) pouĹľije mĂ­sto for cyklu, kdyĹľ se uĹľ dál nepracuje s návratovĂ˝mi hodnotami. Tehdy se (stále si trvám na) typicky map obaluje do listu, aby se ten vĂ˝raz vyhodnotil. Jinak samozĹ™ejmÄ› nÄ›nĂ­ map potĹ™eba obalovat do listu.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<br>
> Naprosty souhlas, parkrat jsem videl volani map ci list<br>
> comprehension bez zajmu o vysledek a take s tim mam problem - je to<br>
> plytvani (zbytecne se alokuje list) a je to hure citelne.<br>
<br>
</span>NedocházĂ­ mi, kde jste vzali, Ĺľe spojuju příklad se staĹľenĂ­m 10 URL s<br>
map(), psal jsem zrovna, Ĺľe jsem na tom příkladu ilustroval C-G. Ale i na<br>
map() se to dá použít<br></blockquote><div><br></div></span><div>Moje chyba. Ĺ patnÄ› jsem si to zapamatoval. NicmĂ©nÄ› moje poznámka se tĂ˝kala jak list comprehension tak map. V obou případech mi toto pouĹľitĂ­ pĹ™ipadá ĹˇpatnĂ©.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
map(urllib.urlopen, ('<a href="http://www.seznam.cz" target="_blank">http://www.seznam.cz</a>', '<a href="http://google.com" target="_blank">http://google.com</a>',<br>
'<a href="http://ibm.com" target="_blank">http://ibm.com</a>'))<br>
<br>
TĂ©Ĺľ nerozumĂ­m tomu, jak jste vyvodili, Ĺľe se jak v tomto případu, tak v tom<br>
mnou prve zmĂ­nÄ›nĂ©m s C-G nezajĂ­mám o návratovou hodnotu.<br></blockquote><div><br></div></span><div>Nenapadlo mÄ›, k ÄŤemu by návratová hodnota mohla bĂ˝t dobrá pĹ™i stahovánĂ­ souboru. NevÄ›dÄ›l jsem, jako funkci máš na mysli, ale pĹ™edstavoval jsem si, Ĺľe pokud jde o stahovánĂ­ souboru, bude to fce, kterĂ© zadám url a cestu na disku a ona soubor stáhne, nebo vyhodĂ­ vĂ˝jimku. V takovĂ© případÄ› nenĂ­ potĹ™eba ĹľĂˇdná návratová hodnota. Pokud nÄ›jaká potĹ™eba je, tak je v tom případÄ› vše v pořádku. I kdyĹľ tedy stejnÄ› preferuji volánĂ­ jakĂ˝chkoliv funkcĂ­ s vedlejším efektem (nebo jakĂ˝ je správnĂ˝ pĹ™eklad) ve for cyklu. KdyĹľ vydĂ­m map (nebo list comprehension), neÄŤekám, Ĺľe se bude dĂ­t nÄ›co zásadnĂ­ho kromÄ› filtrovánĂ­/spracovánĂ­ dat.<br></div></div></div></div></blockquote><div><br></div><div>Fuj, to Y jakoĹľe nikdo nevidÄ›l, ano? :)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Jednak jsem to zmiňoval jako rychlou ukázku C-G jakoĹľto konstruktu pro<br>
studenty (kde se navc netvoří profesionálnĂ­ kĂłd), za druhĂ© mohu dostat<br>
všechny potĹ™ebnĂ© informace vÄŤ. stavovĂ˝ch a za tĹ™etĂ­... kam se vám podÄ›l<br>
EAFP (<a href="https://docs.python.org/2/glossary.html" target="_blank">https://docs.python.org/2/glossary.html</a>)?<br>
<span><br></span></blockquote><div><br></div></span><div>Tu poznámku o EAFP jsem nepochopil.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<br>
> Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do<br>
> functools) a i Guido to vidi obdobne:<br>
> <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=98196" target="_blank">http://www.artima.com/weblogs/viewpost.jsp?thread=98196</a><br>
<br>
</span>S tĂ­m souhlasĂ­m, nic proti. Sám jsem psal, Ĺľe ji používám zřídka.<br>
<br>
DÄ›kuji za diskusi, Ĺˇtvete mÄ› jen malinko. :-)<br></blockquote><div><br></div></span><div>CĂ­lem urÄŤitÄ› nebylo nÄ›koho Ĺˇtvát. MÄ›l jsem pocit, Ĺľe nabĂ­zĂ­m konstruktivnĂ­ názor. Pokud to tak nebylo, omlouvám se.<span class="HOEnZb"><font color="#888888"><br>-- <br></font></span></div><span class="HOEnZb"><font color="#888888"><div>Radek <br></div></font></span></div></div></div>
</blockquote></div><br></div></div>