[python] Buducnost Pythonu: lambda, map, filter

Roman Miklos RMiklos na pss.sk
Pondělí Listopad 13 19:06:17 CET 2006


Mas pravdu, ze je to otazka vkusu, ale ja osobne si myslim, ze tento 
list-comprehention
[f for a in arguments for f in glob.glob(a)]
je krkolomnejsi ako tento reduce 
filez = reduce(operator.add, map(glob.glob, arguments))




Radek Kanovsky <rk na dat.cz> 
Sent by: python-bounces na py.cz
13.11.2006 18:48
Please respond to
Konference PyCZ <python na py.cz>


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






On Mon, Nov 13, 2006 at 06:14:26PM +0100, Roman Miklos wrote:

> Kazdopadne si myslim. ze reduce() ma opodstatnenie, kto tomu rozumie, 
moze 
> robit veci elegantnejsie. 

To je asi otazka vkusu. Osobne nic proti funkci reduce nemam, ale uznavam,
ze patri spis do nejake pomocne knihovny nez do __builtins__.

> # suma 1,..,n
> suma1=lambda n: reduce(lambda x,y: x+y, range(n+1))
> print "suma(%d)=%d" %(5, suma1(5))

sum(range(n+1))

> # suma zoznamu
> suma2=lambda l:  reduce(lambda x,y: x+y, l)
> l = range(6)
> print "suma(%s)=%d" % (l, suma2(l))

sum(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))

Faktorial se prakticky pocita pouze v prvnich lekcich vyuky Pythonu
a tam se to kvuli nazornosti dela rekurzivni funkci :-)

> # 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))

[f for a in arguments for f in glob.glob(a)]

Radek Kaňovský
_______________________________________________
Python mailing list
Python na py.cz
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 



Daląí informace o konferenci Python