Att applicera en funktion på samtliga elemenr i en lista kan implementeras t.ex. med iteration eller funktionalprogrammering. Vi ska här introducera den senare metoden.
L=[randint(0,1000)forkin[1..10]]L
[83, 237, 234, 406, 620, 948, 798, 296, 581, 59]
Antag att vi har en lista
L={a0,a1,…,an}
och vi vill bestämma listan
f(L)={f(a0),f(a1),…,f(an)}
där f är en funktion. Det åstadkommer vi genom att skriva map(f, L).
map(is_odd,L)# avgör vilka element i listan som är udda
L1=[1,2,3,4]L2=['a','b','c','d']map(None,L1,L2)# funktionen None gör inget
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
Vi ser att första elementen i båda listorna kombineras till ett par, likaså andra, tredje och fjärde elementen i respektive listan paras ihop. Med en anonym funktion med två variabler i sitt argument kan vi evaluera dessa par.
map(lambdax,y:x*y,L1,L2)# t.ex.: 3 * 'c' = 'ccc'
['a', 'bb', 'ccc', 'dddd']
Med funktionen filter kan man plocka bort de element som inte uppfyller ett visst villkor. I koden nedan behåller vi de element x i listan som uppfyller x<20.
filter(lambdax:sqrt(x)<20,L)
[83, 237, 234, 296, 59]
Antag att vi har en binär operator ∗ och en lista [a0,a1,…,an] och vill beräkna a0∗a1∗⋯∗an. Det kan vi lösa med funktionen reduce.
L=[1,2,3,4]reduce(lambdax,y:x^2*y,L)
576
I ovanstående exmepel är x∗y=x2y och vi beräknar således ((12⋅2)2⋅3)2⋅4.
Funktionen zip kombinerar listor på liknande sätt som i exemplet ovan med flera listor i map.