Grundläggande programmering
Föreläsning 4: listor, mängder, dictionaries
Agenda för idag
Listor�Slices�aliasing�Iteration över listor�Mängder�Dictionaries
CRUD för Listor
Create: list(), här går v=[] bra för tomma listan. [1, 2, 3, 4, 5], �listomfattningar [i for i in range(1, 11)], list(range(1, 11))
Read: v[0] för första elementet, slice-syntax.
Update: v[i] = 23;v.append(42);
Delete v.pop(); v.remove(42); del v[1]
Slicing
Slicing skapar en grund kopia av en lista.
Grund kopia betyder att de utpekade objekten ligger kvar på sina positioner i minnet, men att det finns en ny lista som pekar ut de som ingår i slicen, dvs operatorn is mellan nya och gamla referensen till samma objekt returnerar True.
En slice behöver åtminstone en början (inklusive) och ett slut (exklusive).
Om en slice får en tredje parameter så kallas denna för stride (steglängd)
Slicing
Minnesbild
Mängder
�Mängdläran grundades av Georg Cantor på sena 1800-talet. �Den mötte motstånd i början, men Hilbert gav starkt stöd.
Mängder i Python
Mängder är föränderliga (mutable) men deras element (dvs sakerna som de innehåller) är immutable.�Mängder i Python är ändliga. Deras element är konkreta och begränsade av datorns minne.�Symbolerna som används för operationer på mängdlära på Python är de asciitecken som mest liknar de matematiska symbolerna.
Några mängdoperationer
Namn | Matematik | LaTeX | Python |
mängddifferens�(set difference) | \ | \setminus | - |
snitt�(intersection) | ∩ | \cap | & |
exklusivt eller�(antingen eller) | △ | \bigtriangleup | ^ |
union | U | \cup | | |
(äkta) delmängd | ⊂ | \subset | < |
tillhör | ∈ | \in | in |
Exempel på mängd 1: Namn på filer och kataloger i en katalog
Exempel på en mängd 2: Synliga variabler
De variabler som du kan se (läsa och uppdatera) på en punkt i programmet är en mängd.
Exempel på en mängd 3: Små positiva int:ar
I Pythons minne finns alltid heltalen från och med -5 upp till 256 som unika objekt i minnet.
Om 13 olika variabler i minnet ska lagra talet 42 så kommer de att peka på samma 42. Det beror på att de är cache:ade.
Dessa 262 tal uppfyller kraven på en mängd men de är inte implementerade som ett set i Python.
Kända matematiska mängder
Datatyper är mängder
bool, NoneType, int, string, float, (set, list, dict) är mängder.��Vilken datatyp tillhör en variabel? Använd funktionen type!
Definitioner i matematiken, datalogin och fysiken är ofta mängder och använder mängdoperationer!
Det ni vet om mängder är användbart för att standardisera tekniska begrepp inom ett område (så att alla vet vad vi pratar om)
Mängdomfattning: Deklarera en mängd i Python
Python stödjer mängdomfattningar från matematiken! Exempel:
Lodstrecket heter \mid i LaTeX. Pythonversionen:
CRUD = Create, Read, Update, Delete
Create: Använd set(), se upp för {} som skapar en dictionary och inte en mängd.
Read: 1 in left; 17 not in left;
Update: add (blanda inte ihop med listor som har append)
Delete:
Dictionaries
En dictionary är en mängd där varje element är en nyckel som är bunden till ett annat objekt.
Konkret exempel: En dictionary kan översätta engelska ord till svenska ord.
Varje nyckel måste vara unik men flera nycklar kan peka ut samma objekt.
Exempel på Dictionaries 1
Hårddiskar/kataloger har en mängd namn som vart och ett är bundet till en fil. Det är inte implementerat med Pythondictionaries, men principen är samma. En mängd nycklar är bundna till objekt som existerar utanför nyckelmängden.
Exempel på Dictionaries 2
Alla globala variabelnamn samt funktionsnamn utgör en mängd. Varje element i mängden är bundet till ett objekt i minnet.
Exempel på Dictionaries 3
Översättningsord från Svenska till Engelska.