Funktionalprogrammering
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.[83, 237, 234, 406, 620, 948, 798, 296, 581, 59]
Antag att vi har en lista
och vi vill bestämma listan
där är en funktion. Det åstadkommer vi genom att skriva map(f, L).
[True, True, False, False, False, False, False, False, True, True]
Notera att listan är oförändrad.
[760, 916, 807, 148, 444, 196, 900, 823, 286, 711]
Imperativ programmering är klumpigare.
[True, True, False, False, False, False, False, False, True, True]
Applicera Eulers fi-funktion på varje element i listan.
[82, 156, 72, 168, 240, 312, 216, 144, 492, 58]
För att t.ex. applicera funktionen på varje element i listan kan vi använda en anonym funktion.
[6640, 55458, 54054, 163618, 382540, 895860, 634410, 86728, 335818, 3304]
Motsvarande kod där man använder iteration skulle kunna ha följande form.
[6640, 55458, 54054, 163618, 382540, 895860, 634410, 86728, 335818, 3304]
[6640, 55458, 54054, 163618, 382540, 895860, 634410, 86728, 335818, 3304]
Man kan kombinera flera listor.
[(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.
['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 i listan som uppfyller $\sqrt{x} [removed]
[83, 237, 234, 296, 59]
Antag att vi har en binär operator och en lista och vill beräkna . Det kan vi lösa med funktionen reduce.
576
I ovanstående exmepel är och vi beräknar således .
Funktionen zip kombinerar listor på liknande sätt som i exemplet ovan med flera listor i map.
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
[(1, 'a', False), (2, 'b', True), (3, 'c', False), (4, 'd', True)]
[(2, True), (3, True), (4, False), (5, True), (6, False), (7, True), (8, False), (9, False), (10, False)]
[(2, True), (3, True), (5, True), (7, True)]
Även existenskvantifikatorn och allkvantifikatorn finns implementerade i Sage/Python.
Finns det något element i L som är mindre än 0.1?
True
Är alla element mindre än 0.5?
False