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 :-) 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. -- Radek
_______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz