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]