Göm menyn

Seminarium 5 - Experimentering

Kapitel som ska ha lästs

Denna sida visar en del av det som kommer att diskuteras på seminariet. Ofta tar handledarna också upp andra uppgifter som inte behöver något specifikt studentmaterial och då syns dessa uppgifter inte på sidan.

Uppgift: Högre ordningens funktioner

Funktionen count ska gå igenom listan och räkna ut hur många av elementen uppfyller det givna predikatet, och därefter returnera detta. Funktionen tar en rak lista samt en predikatfunktion (d.v.s en funktion som tar in någonting, testar det och returnerar True eller False).

Börja med att definiera två predikatfunktioner is_number som returnerar huruvida parametern är ett tal och is_positive som returnerar huruvida parametern är ett positivt tal.

Man kan lösa uppgiften iterativt eller rekursivt. Man ska inte lösa den med hjälp av inbyggda iteratorer.

Här har vi två körexempel:

>>> count([17, 3.14, "banan"], is_number)
2
>>> count([1, -1, 45.3, 4711, -273.15], is_positive)
3

Uppgift: Lambda-uttryck

Vi ska nu koppla ihop lambda med föregående övning, hur kan vi använda de tillsammans med count? Med hjälp av count och lambda-funktioner, lös följande problem:

  • Räkna antalet förekomster av strängen "a"
  • Räkna antalet listor som är två element långa
  • Räkna antalet tal som är delbara med tre
>>> count(["a", "B", "c", "a", "d"], ___________________)
2
>>> count([["a"], [1, 2], ["b", "c"]], ___________________)
2
>>> count([1, 2, 3, 4, 5, 6, 9], ___________________)
3

Sidansvarig: Peter Dalenius
Senast uppdaterad: 2021-12-03