Tiez som cital, co napisal Guido v tom clanku All Things Pythonic The fate of reduce() in Python 3000 http://www.artima.com/weblogs/viewpost.jsp?thread=98196
Ale rozumel som z toho akurat ...blabla...reduce()...blabla..., teda ziadne dovody. Aj ked reduce pouzivam len v spojeni s glob(), prave preto, ze toto pouzitie uvadzaju v kapitole 9 knihy http://www.grada.cz/katalog/kniha/naucte-se-python/ (pozri priklad dole) povazoval som pouzite reduce() za pytonicke. Naopak Guido sa teraz snazi v tom horeuvedenom clanku s nadpisom 'All Things Pythonic' povedat asi to, ze reduce() nie je pytonicky. Kazdopadne si myslim. ze reduce() ma opodstatnenie, kto tomu rozumie, moze robit veci elegantnejsie. Tu je par jednoduchych prikladov na reduce(): --- reduce.py --- # reduce(function, list [, init_val]) # aplikuje fukciu 2 argumentov na prvky zoznamu zlava do prava, # t.j. tak, aby sa zoznam zredukoval na jednu hodnotu. # S init_val mozno zadat inicializacnu hodnotu # Napriklad: # reduce(lambda x,y:x+y,range(1,6),5) # vypocita 5+(((((1+2)+3)+4)+5))=20. # priklady: # suma 1,..,n suma1=lambda n: reduce(lambda x,y: x+y, range(n+1)) print "suma(%d)=%d" %(5, suma1(5)) # suma zoznamu suma2=lambda l: reduce(lambda x,y: x+y, l) l = range(6) print "suma(%s)=%d" % (l, suma2(l)) # faktorial faktorial=lambda n: reduce(lambda x,y: x*y, range(2, n+1), 1) print "faktorial(%d)=%d" % (0, faktorial(0)) print "faktorial(%d)=%d" % (5, faktorial(5)) # Globbing - rozvinut wildcards ?, * v cestach k suborom import sys, operator, glob arguments = sys.argv[1:] # ak su zadane nejake command-line argumenty (napr. editor.py oop1*.* *.py~) if arguments: # pouzitie reduce() filez = reduce(lambda x,y: x+y, map(glob.glob, arguments)) print filez # bez pouzitia reduce() filez=[] for arg in arguments: arg_list=glob.glob(arg) filez += arg_list print filez --- koniec --- Myslim, ze reduce() nebude nahradeny nijakou inou alternativou. Jednoducho to co reduce() robil za teba, budes musiet naprogramovat. Jakub Hegenbart <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 13.11.2006 15:34 Please respond to Konference PyCZ <[email protected]> To Konference PyCZ <[email protected]> cc Subject Re: [python] Buducnost Pythonu: lambda, map, filter Petr Prikryl wrote: > Jde o to, že Python může k reduce a lambda nabídnout > alternativy, které nelze srovnávat s primitivností > podmíněného skoku. Ty alternativy mi připadají lepší > než reduce/lambda. Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k foldl (které si přejmenoval na ?reduce?)? U map je to jasné, přeci jen list comprehension ani generator expression nejsou o moc horší, navíc generator expression má lazy sémantiku, což je Good Thing(TN). Ale u toho reduce() trošku tápu. Jakub Hegenbart _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
