[python] Buducnost Pythonu: lambda, map, filter
Radek Kanovsky
rk na dat.cz
Pondělí Listopad 13 18:48:57 CET 2006
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ý
Další informace o konferenci Python