Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
Mercury: Abstrakce nad algoritmy

martin
martin (neregistrovaný)
11. 3. 2004 8:45

python

Kdyz uz tu je zminena ukazka v perlu, doplnim, ze do pythonu se taky dostaly kousky funkcionalniho programovani, soucet ctvercu by se dal udelat takto

import operator
seznam = [1,2,3]
ctverce = map(lambda x: x*x, seznam)
soucet_ctvercu = reduce(operator.add, ctverce)

v modulu operator jsou definovany funkcionalni verze beznych operatoru, lambda by pozornym ctenarum clanku mela byt jasna, map take, reduce je obdoba foldu.

Python nedovoluje v lambda funkci prirazeni.
pokus
map(lambda x: s += x**2, [1,2,3])
vyvola vyjimku
SyntaxError: invalid syntax
a tento pokus
map(lambda x: s = s + x**2, [1,2,3])
vyvola primo
SyntaxError: lambda cannot contain assignment

K map a reduce patri jeste filter, co dela je asi jasne:
filter(lambda x: x>3, [1,3,4,56,5,4,3,34])
vrati seznam
[4, 56, 5, 4, 34]

deda.jabko
deda.jabko (neregistrovaný)
11. 3. 2004 10:47

Re: python

lambda vyrazy budou asi hodne popularni (taky se neni duvod divit) - nove by je mel mit i C# 2.0 (jako anonymni delegaty)

Zasílat nově přidané příspěvky e-mailem