2015-02-10 20:36 GMT+01:00 Radek Holý <radekholypub...@gmail.com>: > > Dne 10. února 2015 10:18 Vladimir Macek <ma...@sandbox.cz> napsal(a): > >> On 9.2.2015 21:50, Jan Bednařík wrote: >> > >> > > Mě se líbí explicitní použití funkcí map() a filter(), protože je >> > to pro začátečníka čitelnější a >> > pochopitelnější, než List Comprehension >> > >> > Tohle me zajima - ja mam presne opacnou zkusenost. Bavime se o >> > zacatecnicich v programovani (s temi mam zkusenost ja), ci jen >> > zacatecniky s pythonem, ale programatory? >> > >> > >> > Myslím si, že pro člověka, který vidí poprvé map a filter a List >> > Comprehension, je snažší najít si v dokumentaci co dělají funkce map a >> > filter a pochopit je samostatně. Protože to jsou dvě oddělené věci. >> > Zatímco když se použije List Comprehension kombinující map i filter v >> > jednom zápise, tak je tam toho na rozluštění a pochopení více. A taky >> > ten >> > List Comprehension nejde snadno dohledat v dokumentaci, protože z kódu >> > není poznat, jak se to jmenuje (neobsahuje klíčová slova jako "map" či >> > "filter"). >> > >> > Nějakou zásadnější osobní zkušenost s výukou nemám. Ale minimálně na >> > škole jsem se setkal s tím, že se úplní začátečníci učí nejdříve >> > funkcionální paradigma, tak by ten map a filter mělo být snadné pochopit >> > pro kohokoliv. Nicméně naučit se místo toho v Pythonu rovnou List >> > Comprehension určitě není na škodu. >> > >> > Honza >> >> Přispěju k diskusi Honzů. >> >> Nikdy jsem o tom vážně nepřemýšlel, ale asi mám ve svém kódu sklony vybrat >> to, co je méně ukecané. Comprehension a Gen. exp. (dále C-G) někdy >> potřebují až třikrát zopakovat řídicí proměnnou, zatímco filter si vystačí >> s žádnou nebo třeba jedinou zmínkou. Takže někdy preferuju map a filter. >> Reduce přijde ke slovu zřídka, což je asi přirozené. >> >> Souhlasím s již dříve popsanou výhodou jednoduchosti pochopení >> funkcionálních konstruktů, které dělají jednu věc, zatímco C-G jich >> kombinují několik. Je to švýcarský nůž a může pythonistům připadat hrozně >> šikovný. Ale mě se ne vždy líbí ta ukecanost (řádek je dlouhý, často >> zalomený) a překombinovanost. >> >> Nemám to exaktně potvrzeno hlasováním, ale když na školeních Pythonu učím, >> necítím z posluchačů zvláštní nadšení, když se probírá C-G. Některé udiví, >> co se tím dá dělat, když vyrobíme mocniny lichých čísel nebo stáhneme 10 >> URL. Ale možná je to tak, že to je pro ně další nástroj, který je unikátní >> a tudíž stojí energii navíc se ho učit. >> >> V. > > > Tak když už jste se v tom rozhodli původnímu tazateli udělat takový guláš, > tak já se taky přidám :-) V Pythonu dělám skoro 9 let a pořád platí, že > kdykoliv někde narazím na "reduce", "map" apod. tak mě to vždy zdrží a > chvíli mi trvá, než pochopím o co jde. List comprehensions se mi čtou > snadněji - přirozeněji. Nehledě na to, že ty funkcionální záležitosti jsou > skoro vždy spojené s deklarací jinak zbytečných funkcí se složitým významem, > nebo ještě komplikovanějšími lambda funkcemi. Každopádně je to prostě otázku > vkusu/zvyku... Jedním z problémů může pro mě být ta prefixová notace. Vypadá > to jako Lisp :-)
Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude delat. > Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní problém. > Jakmile někdo volá "map", aniž by ho zajímala návratová hodnota volané > funkce, považuji to za chybu. Nehledě na to, že v Pythonu 3 "map" vrací > iterátor, takže se kvůli tomu ještě typicky "map" obaluje do "list"... V > těchto případech vždy preferuji klasický "for" cyklus. Ale opět je to jen > můj názor. Naprosty souhlas, parkrat jsem videl volani map ci list comprehension bez zajmu o vysledek a take s tim mam problem - je to plytvani (zbytecne se alokuje list) a je to hure citelne. Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do functools) a i Guido to vidi obdobne: http://www.artima.com/weblogs/viewpost.jsp?thread=98196 > -- > Radek > > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz