1 of 21

Grundläggande programmering

Föreläsning 4: listor, mängder, dictionaries

2 of 21

Agenda för idag

Listor�Slices�aliasing�Iteration över listor�Mängder�Dictionaries

3 of 21

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]

4 of 21

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)

5 of 21

Slicing

6 of 21

Minnesbild

7 of 21

Mängder

  • I mängdernas universum finns unika element.
  • I början rekommenderar jag att endast använda heltal och strängar.

�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.

8 of 21

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.

9 of 21

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

10 of 21

Exempel på mängd 1: Namn på filer och kataloger i en katalog

11 of 21

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.

12 of 21

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.

13 of 21

Kända matematiska mängder

14 of 21

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!

15 of 21

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)

16 of 21

Mängdomfattning: Deklarera en mängd i Python

Python stödjer mängdomfattningar från matematiken! Exempel:

Lodstrecket heter \mid i LaTeX. Pythonversionen:

17 of 21

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:

18 of 21

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.

19 of 21

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.

20 of 21

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.

21 of 21

Exempel på Dictionaries 3

Översättningsord från Svenska till Engelska.