MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Like dokumenter
TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Python: Mengder og Dictionaries 3. utgave: Kapittel 9

Python: Mengder og Dictionaries 3. utgave: Kapittel 9

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Oppsummering fra sist

INF120: Oblig 3. Yngve Mardal Moe

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Python: Lister og tupler Gaddis: Kapittel 7

Læringsmål og pensum. v=nkiu9yen5nc

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum. if (be): else (not_to_be):

Øvingsforelesning 9 i Python (TDT4110)

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 IT Grunnkurs Høst 2015

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

Øvingsforelesning 7 i Python (TDT4110)

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

PGZ - Hangman Ekspert Python Lærerveiledning

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Læringsmål og pensum. Designe et program

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Læringsmål og pensum. Oversikt

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

TDT4110 IT Grunnkurs Høst 2014

TDT4105 Informasjonsteknologi, grunnkurs

Python: Filer og unntak Gaddis: Kapittel 6

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Håndtere mange verdier

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Øvingsforelesning 1 Python (TDT4110)

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

Python: Strenger 3. utgave: Kapittel 8

Informasjon Prøveeksamen i IN1000 høsten 2018

TDT4110 IT Grunnkurs Høst 2016

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Filbehandling Tekstfiler

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Løse reelle problemer

Hangman. Level. Introduksjon

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Professor Alf Inge Wang

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

IN1000 Obligatorisk innlevering 7

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

IN1000 Repetisjonskurs: IO og listeoperasjoner (+ string)

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

TDT4110 IT Grunnkurs Høst 2016

TDT4105 Informasjonsteknologi, grunnkurs

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Opphavsrett: Forfatter og Stiftelsen TISIP

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Læringsmål og pensum. Oversikt. Systemprogramvare Operativsystemer Drivere og hjelpeprogrammer. To hovedtyper programvare

Steg 1: Regneoperasjoner på en klokke

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Forkurs i informatikk Python. Andreas Færøvig Olsen

Objektorientert programmering i Python

Løkker og lister. Løse problemer med programmering. INF1001, uke3 Geir Kjetil Sandve

Steg 1: Rest etter divisjon

Del 4 Noen spesielle C-elementer

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

ITGK - H2010, Matlab. Repetisjon

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

TDT4110 IT Grunnkurs Høst 2014

Transkript:

1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9 Professor Alf Inge Wang 2 Læringsmål og pensum Mål Lære å forstå og kunne bruke sets Lære å forstå og kunne bruke dictionary Lære å forstå og kunne bruke serialisering av objekter Pensum Starting out with Python, Chapter 9: Dictionaries and Sets 3 Kapittel 9.2 MENGDER (SETS) 1

4 Datastruktur for mengde (sets) Python har innebygd en datastruktur for å håndtere matematiske mengder (sets på engelsk). Hvert element i en mengde er unik, så du vil ikke få lagt til et element som finnes fra før. Mengder er ikke ordnet: kan ikke anta rekkefølgen. De fleste funksjoner for lister kan brukes for mengder. Mengder har flere spesifikke operasjoner bla.: intersection: Kun elementer representert i begge mengdene union: Alle elementer fra begge mengdene (kun en av hver) 5 Opprette og endre på mengder En mengde opprettes ved å bruke funksjonen set(x) A = set([5,3,3,12]) B = set([true, ost,23.2,92,false]) C = set( aaabcd ) # gir a, b, c, d D = {9,4,1,3} # Lager en mengde Legge til og fjerne elementer fra en mengde: A.add(9) # Legg til ett element A.update([3,4,2]) # Legg til flere elementer B.remove(92) Vi prøver litt.. 6 Iterasjon og test av mengder På samme måte som for lister og filer, kan for-løkke brukes for å iterere over en mengde: for x in mengde: print(x) # Skriver ut alle elementer Kan også undersøke om en verdi finnes eller ikke finnes i en mengde ved bruk av in eller not in: if 1 in A: print( Verdien 1 er i mengden A ) if 5 not in A: print( Verdien 5 er ikke i mengden A ) Vi prøver litt 2

7 Mengdeoperasjoner på A og B Union av to mengder: C = A.union(B) # C blir union av A og B Snitt av to mengder: C = A.intersection(B) # C blir snitt av A og B Forskjellen på to mengder: C = A.difference(B) # Finnes i A, men ikke i B Symmetrisk forskjell på to mengder: C = A.symmetric_difference(B) # Elementer som ikke deles av A og B Sjekke delmengde eller supermengde: A.issubset(B) # Sjekker om A er delmengde av B A.issuperset(B) # Sjekker om A er supermengde av B 8 Oppgave: mengder Skriv Python-koden for å gjøre følgende: Spør bruker om å skrive inn to mengder ved hjelp av input, og lagre dette som mengdene A og B. Skrive ut resultatet til skjerm av følgende: Snitt av A og B (intersection) Union av A og B (union) Forskjell på A og B (difference) Symmetrisk forskjell på A og B (symmetric_difference) Test om A er delmengde av B (issubset) mengder.py 9 Kapittel 9.1 DICTIONARIES 3

10 Datastruktur: Dictionaries Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller: Defineres ved å bruke krøllparanteser { } (ALT+SHIFT 8/9 på Mac) Kan bruke hva som helst som nøkkel(indeks) (ikke bare tall som i lister): Tekst strenger, Heltall (men trenger ikke å være i rekkefølge), Flyttall, Sannhetsverdier (True eller False), En kombinasjon av de ovenfor A = {} # Tom dictionary A[ Kari ] = 92925492 # Oppretter et element tlf={ Jo':73540000, Per':92542312,'Else':54239212} print(tlf[ Per ]) # Skriver ut verdien 92542312 11 Bruk av operatorene in og not in i Dictionaries Man kan bruke in og not in i dictionaries for å sjekke om elementer finnes (som lister og set): tlf={ Jo':73540000, Per':92542312,'Else':54239212} if ( Per in tlf): print(tlf[ Per ]) if ( Lars not in tlf): print( Lars er ikke i dictionarien ) 12 Operasjoner for dictionaries Operasjon Forklaring len(d) d[k] d[k] = v del d[k] d.clear() d.copy() Antall elementer i d Verdi til element i d med nøkkel k Sett element k til verdi v Slett element k i d Fjerne alle element i d Lag kopi av d d.has_key(k) Fjernet i Python 3. Må bruke in i stedet. Oprasjon d.items() d.keys() d.values() d.get(k) d.get(k,v) Forklaring Returnerer liste av (nøkkel,verdi) par Returnerer liste av nøkler i d Returnerer liste av verdier i d Samme som d[k] Returnerer d[k] hvis k er gyldig, ellers v dictionary_metoder.py 4

13 Ulike datatyper i dictionaries Dictionaries kan brukes til å representere sammensatt informasjon ved hjelp av lister. Lister gjør det mulig å knytte en nøkkel til ulike typer data. Eks. lagre telefonnummer, adresse og om vedkommende har betalt i en dictionary: db = {} # Oppretter dictionary db[ Jo ]=[90503020, Logata 4, 7000 Trd,True] db[ Ann ]=[50201020, Gaamannv. 2, 5000 Bergen,False] print(db[ Jo ]) # skriver ut lista med data for Jo 14 for-løkke og dictionary Bruker man for-løkke på en dictionary, løper man igjennom nøklene til dictionary: d = { navn : Per, alder :28, IQ :29} for x in d: # går igjennom nøkler i d print(x) # skriver ut nøklene navn, alder, IQ For å sikre gjennomgang av nøkler alfabetisk: for x in sorted(d.keys()): # sorterer nøkler print(x) for_dictionary.py 15 Nyttig bruk av dictionary Ettersom vi kan bruke hva som helst som nøkkel i en dictionary, egner den seg svært godt til å telle forekomster i strenger, i lister eller lignende. f = {} # Oppretter dictionary for å telle forekomster for element in liste: # sjekker elementer i ei liste f[element] = f.get(element,0) +1 # Legg til +1 i dictionary med nøkkel element Vi ser på et eksempel telling_dictionary.py 5

16 Kapittel 9.3 SERIALISERING AV OBJEKTER 17 Serialisering av objekter Serialisering av objekter er prosessen å konvertere et objekt til en strøm av bytes som kan lagres til fil, som senere kan lastes inn igjen. En persistent variabel, betyr at verdier overlever selv om man avslutter Python og avslutter datamaskinen. Python har biblioteket pickle som gjør det mulig å lagre og laste dictionary til/fra disk. 18 Lagre dictionary til disk For å lagre en dictionary til disk kan biblioteket pickle brukes sammen med metoden dump. Må åpne en fil som binærfil og ikke som tekst, ettersom det er mer enn tekst som lagres (struktur): db={ Jo :[10, Skogata 3 ], Per :[20, Heigt 2 ]} import pickle # Importerer modulen shelve f = open( database.dat, wb ) # b=binary pickle.dump(db,f) # Dumper db til disk f.close() # Stenger fila lagre_dictionary.py 6

19 Laste inn dictionary fra disk Laste inn dictionary fra disk gjøres ved hjelp av load metoden i pickle-biblioteket. Husk at åpne fila som binærfil og ikke tekst. import pickle f = open( database.dat, rb ) # r=read, b=binary data = pickle.load(f) # Laster inn dict fra disk f.close() laste_dictionary.py 20 Oppsummering Sets er nyttige for å gjøre operasjoner på mengder: intersection og union Sets defineres ved å bruke funksjonen set(liste) Dictionary ligner på lister men man kan bruke hva som helst som nøkkel (indeks). Opprettes ved å bruke A = {} eller A = { navn : Petter Ole } En fordel med dictionary er at man ikke trenger en indeks som er i rekkefølge. Det finnes flere kommandoer som man kan bruke på dictionary. Dictionary oppfører seg som en database. 7