Listor = generaliserade strängar. Introduktion till programmering SMD180. Föreläsning 8: Listor. Fler listor. Listindexering.



Relevanta dokument
Introduktion till programmering SMD180. Föreläsning 8: Listor


Finita automater, reguljära uttryck och prefixträd. Upplägg. Finita automater. Finita automater. Olika finita automater.

Sammanfattning, Dag 9

============================================================ V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE.

V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE ±. är begränsad i intervallet [a,b].

============================================================ V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE ±.

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 5-7.

FORMELLA SPRÅK, AUTOMATER OCH BERÄKNINGSTEORI ÖVNINGSUPPGIFTER PÅ REGULJÄRA SPRÅK

V1. Intervallet [a,b] är ändligt, dvs gränserna a, b är reella tal och INTE ±. är begränsad i intervallet [a,b].

Tentamen Programmeringsteknik II Skrivtid: Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper.

Trigonometri. 2 Godtyckliga trianglar och enhetscirkeln 2. 3 Triangelsatserna Areasatsen Sinussatsen Kosinussatsen...

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Bokstavsräkning. Regler och knep vid bokstavsräkning

Rationella uttryck. Förlängning och förkortning

Föreläsning 7: Trigonometri

Kontrollskrivning 3 till Diskret Matematik SF1610, för CINTE1, vt 2019 Examinator: Armin Halilovic Datum: 2 maj

14. MINSTAKVADRATMETODEN

Exponentiella förändringar

TATA42: Föreläsning 4 Generaliserade integraler

1 e x2. lim. x ln(1 + x) lim. 1 (1 x 2 + O(x 4 )) = lim. x 0 x 2 /2 + O(x 3 ) x 2 + O(x 4 ) = lim. 1 + O(x 2 ) = lim = x = arctan x 1

LINJÄR ALGEBRA II LEKTION 1

Introduktion till programmering SMD180. Föreläsning 9: Tupler

TATA42: Föreläsning 4 Generaliserade integraler

Matris invers, invers linjär transformation.

Finaltävling den 20 november 2010

PASS 1. RÄKNEOPERATIONER MED DECIMALTAL OCH BRÅKTAL

EGENVÄRDEN och EGENVEKTORER

Lösningsförslag till tentamen i SF1683 och SF1629 (del 1) 23 oktober 2017

9. Vektorrum (linjära rum)

Definition 1 En funktion (eller avbildning ) från en mängd A till en mängd B är en regel som till några element i A ordnar högst ett element i B.

definitioner och begrepp

Byt till den tjocka linsen och bestäm dess brännvidd.

6 Formella språk. Matematik för språkteknologer (5LN445) UPPSALA UNIVERSITET

SF1625 Envariabelanalys

Sidor i boken

GEOMETRISKA VEKTORER Vektorer i rummet.

Sfärisk trigonometri

Kvalificeringstävling den 2 oktober 2007

Analys grundkurs B lab 1. Stefan Gustafsson Per Jönsson Fakulteten för Teknik och Samhälle, 2013

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

x = x = x = x=3 x=5 x=6 42 = 10x x + 10 = 15 x = = 20 x = 65 x + 36 = 46

ORTONORMERAT KOORDINAT SYSTEM. LÄNGDEN AV EN VEKTOR. AVSTÅND MELLEN TVÅ PUNKTER. MITTPUNKT. TYNGDPUNKT. SFÄR OCH KLOT.

XIV. Elektriska strömmar

Föreläsning 7. Splay-träd. Prioritetsköer och heapar. Union/Find TDDC70/91: DALG. Innehåll. Innehåll. 1 Splay-träd

Lösningar och kommentarer till uppgifter i 1.2

Induktion LCB 2000/2001

Algebraiska uttryck: Introduktionskurs i matematik. Räknelagar: a = b a. a b. Potenser: 1. = ( n gånger )

1. (6p) (a) Använd delmängdskonstruktionen för att tillverka en DFA ekvivalent med nedanstående NFA. (b) Är den resulterande DFA:n minimal? A a b.

Internetförsäljning av graviditetstester

93FY51/ STN1 Elektromagnetism Tenta : svar och anvisningar

Mat Grundkurs i matematik 1, del III

Vilken rät linje passar bäst till givna datapunkter?

TMV151/TMV181. Fredrik Lindgren. 19 november 2013

Associativa lagen för multiplikation: (ab)c = a(bc). Kommutativa lagen för multiplikation: ab = ba.

Uppgiftssamling 5B1493, lektionerna 1 6. Lektion 1

Generaliserade integraler

Tentamen i ETE115 Ellära och elektronik, 25/8 2015

Integraler. 1 Inledning. 2 Beräkningsmetoder. CTH/GU LABORATION 2 MVE /2013 Matematiska vetenskaper

Tentamen i Databasteknik

Så här gör du? Innehåll

Materiens Struktur. Lösningar

EasyMP Multi PC Projection-bruksanvisning

Preliminär version 2 juni 2014, reservation för fel. Tentamen i matematik. Kurs: MA152G Matematisk Analys MA123G Matematisk analys för ingenjörer

GEOMETRISKA VEKTORER Vektorer i rummet.

19 Integralkurvor, potentialer och kurvintegraler i R 2 och R 3

SIGNALER OCH SYSTEM II LEKTION 2 / MATEMATISK LEKTION 1. Fredrik Andréasson. Department of Mathematics, KTH

Lösningar basuppgifter 6.1 Partikelns kinetik. Historik, grundläggande lagar och begrepp

Tyngdkraftfältet runt en (stor) massa i origo är. F(x, y, z) =C (x 2 + y 2 + z 2 ) 3 2

RÄTTNINGSMALL TILL KEMIOLYMPIADEN 2014, OMGÅNG 2

ORTONORMERADE BASER I PLAN (2D) OCH RUMMET (3D) ORTONORMERAT KOORDINAT SYSTEM

Kan det vara möjligt att med endast

MEDIA PRO. Introduktion BYGG DIN EGEN PC

Diskreta stokastiska variabler

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Definition. En cirkel är mängden av de punkter i planet vars avstånd till en given punkt är

Definition. En cirkel är mängden av de punkter i planet vars avstånd till en given punkt är (*)

13 Generaliserade dubbelintegraler

Tentamen 1 i Matematik 1, HF dec 2016, kl. 8:00-12:00

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

INLEDNING: Funktioner (=avbildningar). Beteckningar och grundbegrepp

Frågor för tentamen EXTA50 Samhällsmätning, 9 hp, kl januari, 2015.

24 Integraler av masstyp

Elektroteknik MF1016 föreläsning 11 Permanetmagnet Synkronmotor

Läsanvisningar för MATEMATIK I, ANALYS

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

SF1625 Envariabelanalys

AUBER 95 9 jan LÖSNINGAR STEG 1:

Geometri. 4. Fyra kopior av en rätvinklig triangel kan alltid sättas ihop till en kvadrat med hål som i följande figur varför?

Avsnitt 3. Determinanter. Vad är en determinant? Snabbformler för små determinanter

Appendix. De plana triangelsatserna. D c

1.1 Sfäriska koordinater

Enhetsvektorer. Basvektorer i två dimensioner: Basvektorer i tre dimensioner: = i. Enhetsvektor i riktningen v: v v. Definition: Vektorprodukt

Nya regler för plåtbalkar-eurokod 3-1-5

Uttryck höjden mot c påtvåolikasätt:

KVADRATISKA MATRISER, DIAGONALMATRISER, MATRISENS SPÅR, TRIANGULÄRA MATRISER, ENHETSMATRISER, INVERSA MATRISER

Tentamen i Analys B för KB/TB (TATA09/TEN1) kl 08 13

IE1204 Digital Design

Uppsala Universitet Matematiska Institutionen T Erlandsson

Övning 1 - Abstrakta datatyper

Transkript:

1 Introduktion till progrmmering SMD180 Föreläsning 8: Listor 2 Listor = generliserde strängr Strängr = sekvenser v tecken Listor = sekvenser v vd som helst [10, 20, 30, 40] # en list v heltl ["spm", "ungee", "swllow"] # en list v strängr [] # den tomm listn [ [1,2], [], [], [2,2,3] ] # en list v listor Bekväm funktion för generering v enkl heltlslistor: >>> rnge(1, 5) [1, 2, 3, 4] >>> rnge(7, 7) [] Jämför likheten med strängrs index! Fler listor Listindexering Vrinter v rnge(): rnge(a, B) heltlen från A till B, inkludernde A men exklusive B rnge(b) heltlen från 0 till B, inkludernde 0 men exklusive B rnge(a, B, C) vr C:e element ur listn rnge(a, B) >>> rnge(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> rnge(1, 10, 2) [1, 3, 5, 7, 9] Indexering ger enskild element i en list: >>> numers = [17, 123] >>> print numers[0] 17 >>> print numers[3-2] 123 >>> print numers[-1] 123 >>> print numers[2] IndexError: list index out of rnge Noter överensstämmelsen med strängindexering 3 4 Längden v en list En gmml eknt, funktionen len(): horsemen = ["wr", "fmine", "pestilence", "deth"] i = 0 while i < len(horsemen): print horsemen[i] i = i+1 Noter värdet v i sist vrvet i snurrn! OBS: vd är längden v följnde list? [ [1, 2, 3, 4, 5], [6, 7, 8], [] ] Svr: 3 listn innehåller tre element (som i sig är listor) Listmedlemskp Ännu en gmml eknt: opertorn in >>> horsemen = ['wr', 'fmine', 'pestilence', 'deth'] >>> 'pestilence' in horsemen >>> 'deuchery' in horsemen Flse Med negtion: >>> not ('deuchery' in horsemen) Ekvivlent form (syntktisk krumukt i Python): >>> 'deuchery' not in horsemen 5 6 1

for-snurrn for-snurrn Vi hr sett den för strängr. Generell form är: for vriel in listuttryck: stslist Ekvivlent med (om vi ntr tt i och x är onvänd): i = 0 x = listuttryck while i < len(x): vriel = x[i] stslist i = i+1 [OBS: oken förenklr snningen lite väl mycket här...] for h in horsemen: print h, "(rr) ", print for num in rnge(21): if num%3 == 0: print num, Output: wr (rr) fmine (rr) pestilence (rr) deth (rr) 0 3 6 9 12 15 18 7 8 9 Listopertioner Konktenering: >>> [1,2,3] + [4,5,6] [1, 2, 3, 4, 5, 6] "Multipliktion": >>> [0] * 4 [0, 0, 0, 0] Segment: >>> list = ['', '',, 'd', 'e', 'f'] >>> list[1:3] ['', ] >>> list[3:] ['d', 'e', 'f'] 10 Viktig skillnd gentemot strängr Python etrktr ett tecken såsom en sträng v längden 1 >>> "cde"[2] >>> "cde"[2:3] Denn ekvivlens gäller dock inte för listor: >>> ['', '',, 'd', 'e'][2] >>> ['', '',, 'd', 'e'][2:3] [] Python skiljer lltså på ett värde x och listn estående v endst värdet x 11 Listor och muttion Ännu en viktig skillnd gentemot strängr: vi kn gå in och förändr delr v en redn existernde list! >>> fruit = ["nn", "pple", "quince"] ["nn", "pple", "quince"] >>> fruit[0] = "per" >>> fruit[-1] = "ornge" ["per", "pple", "ornge"] Jämför: >>> str = "Hello" >>> str[0] = 'J' TypeError: oject doesn't support item ssignment 12 Tilldelning Grundläggnde syntktisk form: vriel = uttryck Tilldelning till listelement: listuttryck[indexuttryck] = uttryck Specilfll v föregående: listvriel[indexuttryck] = uttryck Kryptiskt exempel: >>> (fruit+fruit)[0] = "KIWI" ["per", "pple", "ornge"] Förklring: listn fruit+fruit förändrs, inte listn fruit 2

Segmenttilldelning Ytterligre en form v tilldelning: listuttryck[index1:index2] = uttryck >>> list = ['', '',, 'd', 'e', 'f'] >>> list[1:3] = ['x', 'y'] # yt ut ['', 'x', 'y', 'd', 'e', 'f'] >>> list[2:5] = [] # t ort ['', 'x', 'f'] >>> list[1:1] = ['Q', 'P', 'R', 'S', 'T'] # sätt in ['', 'Q', 'P', 'R', 'S', 'T', 'x', 'f'] Repetion om index Index pekr melln de enskild elementen i en list: list: '' '' 'd' 'e' 'f' index: 0 1 2 3 4 5 6 Alltså: list[2:5] pekr ut... segmentet 13 14 Om pltser i minnet Betrkt följnde tilldelningr: = "nn" = "nn" Vi kn tänk oss två möjlig stckdigrm: Om pltser i minnet Betrkt följnde tilldelningr: = 73 = 73 Vi kn tänk oss två möjlig stckdigrm: "nn" "nn" "nn" 73 73 73 Spelr denn skillnd någon roll? Svr: Nej, inte för strängr (eftersom de inte kn muter) Python nvänder för övrigt den högr tekniken för strängr 15 Spelr denn skillnd någon roll? Svr: Nej, inte för heltl (eftersom de inte kn muter) Python nvänder för övrigt den vänstr tekniken för heltl 16 Om pltser i minnet Betrkt nu följnde tilldelningr med listor: = = Vi kn tänk oss två möjlig stckdigrm: Om pltser i minnet Men om vi i stället skriver så här: = = Nu lir representtionen enligt digrmmet till höger: Spelr denn skillnd någon roll? Svr: J, eftersom listor kn muter! Python nvänder den vänstr tekniken för exemplet ovn... 17 Vd gör dett för skillnd i prktiken? 18 3

Listmuttion 1 T först fllet: = = Nu låter vi muter: [0] = 8 Dett inneär tt progrmmets tillstånd ändrs så här: Eftersom vi prtr om två skild listor förändrs inte : >>> print Listmuttion 2 Men nu tittr vi på ndr fllet: = = Och så låter vi muter: [0] = 8 Progrmmets tillstånd ändrs nu så här: Då och är nmn på smm list förändrs även : >>> print 19 20 21 Alising När två vriler är nmn på smm dt i minnet klls det lising ( är ett lis för i vårt senste exempel) Alising är viktigt tt känn till eftersom det påverkr vd muttioner får för etydelse ( förändrdes fstän inte nämndes i någon tilldelning) I viss fll är lising ett gissel dtstrukturer kn förändrs s s "kvägen" på ett sätt som är svårt tt följ I ndr fll kn dock lising vr precis den effekt mn vill h speciellt när vi skpr dtstrukturer som sk återspegl föränderlig ojekt i den verklig världen Minns dock tt lising (än så länge) endst erör listor 22 Alising Regler: Vid tilldelning v listor på formen vriel = vriel skps ett lis List-opertorer såsom +, * och segment skpr lltid ny listor, likså gör ll uttryck på formen [,,..., c] Vill mn skp en kopi (klon) v en list x kn mn med fördel skriv uttrycket x[:] >>> = >>> = [:] >>> [0] = 8 >>> print 23 Alising vid funktionsnrop Prmeterpssning vid funktionsnrop är tt etrkt som vrieltilldelning vd gäller lising def deletehed(list): list[0:1] = [] Om vi skriver >>> numers = >>> deletehed(numers) hittr vi följnde progrmtillstånd när deletehed körs: -topleveldeletehed numers list 24 Alising vid funktionsnrop Smm sk gäller vid retur v funktionsresultt: def chopif(e, x): if e: return [] else: return x Här returners (ev) smm list som togs emot som x: >>> numers = >>> vlues = chopif(flse, numers) >>> numers[0] = 8 >>> print vlues 4

Betrkt mtrisen Nästlde listor 1 2 3 4 5 6 7 8 9 En Python-representtion som en list v rder: >>> mtrix = [[1,2,3], [4,5,6], [7,8,9]] >>> mtrix[1] [4, 5, 6] >>> mtrix[1][2] 6 Alterntiv kodning, som en list v kolumner: >>> mtrix = [[1, 4, 7], [2, 5, 8], [3, 6, 9]] Strängr och listor Att del upp en sträng i en list v ord: >>> import string >>> string.split(" cd ef") ["", "cd", "ef"] Att del vid ndr stället än mellnslg: >>> string.split("the rin in Spin", "i") ["The r", "n in Sp", "n"] Motstsen: sätt smmn en list v strängr till en sträng: >>> string.join(["", "cd", "ef"]) " cd ef" >>> string.join(["the r", "n in Sp", "n"], "i") "The rin in Spin" 25 26 5