[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