[python] List comprehention

Roman Miklos RMiklos na pss.sk
Úterý Listopad 14 12:21:38 CET 2006


No ako si tu cital lambda je obsolete a teda zbytocne aby si to v tejto 
faze vyvoja Pythonu este studoval.
Lambda je v podstate (jak uz mnohi pisali) hracka z FP, ktora nema valny 
vyznam

Ale ak ta to zaujima tu je nieco
http://www.diveintopython.org/power_of_introspection/lambda_functions.html
http://www.secnetix.de/~olli/Python/lambda_functions.hawk

Kedysi som sa s tym trochu hral a tu ti posielam zdrojak s mojimi 
poznamkami:

#################
# Lambda funkcie
#################

# definicia Lambda funkcie
lambda x: x * x
print lambda x: x * x
# definicia Lambda funkcie a jej naviazanie (pomenovanie) na f
f = lambda x: x * x
print f
# vyhodnotenie pomenovanej Lambda funkcie
print f(2)
# vyhodnotenie nepomenovanej Lambda funkcie hned na mieste jej definicie
print (lambda x: x*x + 2*x - 3) (4)


###########
# Currying
###########

# Namiesto Lambda funkcie 2 argumentov
print lambda x,y: x + y
print (lambda x,y: x + y) (3, 4)
# mozno vytvorit generujucu funkciu s jednym argumentom, 
print lambda x: (lambda y: x + y)
# ktora pre kazdy argument generuje funkciu jednej premennej
print lambda x: (lambda y: x + y) (3) # vysledok je  lambda y: 3 + y
# ak sa tato vygenerovana funkcia vyhodnoti s nejakym argumentom, da 
vysledok
print (lambda x: (lambda y: x + y) (3)) (4) # t.j. (lambda y: 3 + y) (4)

# t.j prehladnejsie zapisane cez pomenovane Lambda funkcie:
# namiesto funkcie 2 argumentov
h = lambda x,y: x + y
print h(3,4)
# mozeme vytvorit generujucu funkciu s jednym argumentom, 
g = lambda x: (lambda y: x + y)
# ktora pre kazdy argument generuje funkciu jednej premennej
print g(3) # vysledok je g(3) = lambda y: 3 + y
# ak sa tato vygenerovana funkcia vyhodnoti s nejakym argumentom, da 
vysledok
print g(3)(4) # t.j. g(3)(4) = (lambda y: 3 + y) (4)





"MaReK Olšavský" <orsm na centrum.cz> 
Sent by: python-bounces na py.cz
14.11.2006 11:48
Please respond to
Konference PyCZ <python na py.cz>


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] List comprehention






Kdyz uz jste u toho, je nekde *rozumny* tutor na ty lambda vyrazy? Lisp 
se mi kvuli tomu studovat nece...

- --

MaReK "Penguin" Olšavský
PHP Voodoo
private mail: orsm na centrum.cz
private web: http://orsm.wz.cz
ICQ#: 160 178 925; MSN: orsm na centrum.cz; Skype: Penguin_007
tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX)

Na stránce bylo napsáno: "Optimalizováno pro Explorer 5, nebo lepší".
   Tak jsem přešel na Mozilla Firefox  --> http://firefox.czilla.cz/


Roman Miklos napsal(a):
> List comprehention som doteraz okrem trivialnych prikladov nikdy 
nepouzil. 
> Kedze to vsak ma v buducnosti v Pythone nahradit ine konstrukcie zacinam 

> sa o to zaujimat.
> 
> Zaujalo, ma ze 
> filez = reduce(lambda x,y: x+y, map(glob.glob, arguments))
> 
> alebo
> 
> filez=[]
> for arg in arguments:
>   arg_list=glob.glob(arg)
>   filez += arg_list
> 
> sa da napisat cez generator zoznamu napisat takto:
> 
> [f for a in arguments for f in glob.glob(a)]
> 
> Nemozem vsak pochopit ako sa ten zapis skonstruuje:-) Uff, je to pre mna 

> intuitivne asi tak ako teoria relativity. 
> Da sa to nejako rozobrat na casti, alebo prezatvorkovat, aby bolo vidiet 

> co k comu patri? Moze mi to niekto vysvetlit?
> 
> 
> 
> 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
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> 
_______________________________________________
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