Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Listen vs. Arrays ====== Listen und Arrays sind Variablen, die mehrere Werte auf einmal enthalten. Einzelne Werte werden mit eckigen Klammern über Indizies angesprochen, die jeweils von 0 bis $n-1$ laufen (bei total $n$ Elementen). Der unmittelbare Inhalt von Listen ist unveränderbar, bei Arrays veränderbar. <code python> a = (0,1,4,9,16,25) # Liste mit 6 Elementen b = [2,3,5,7,11,17] # Array mit 6 Elementen print a[3] # Ergibt 9, das vierte Element print b[3] # Ergibt 7 b[3]=77 print b[3] # Ergibt 77 for i in a: # i nimmt nacheinander die Werte 0,1,4,9,16,25 an print(i) for i in b: # i nimmt nacheinander die Werte 2, 3, 5, 77, 11, 17 an print(i) a[3] = 99 # Fehler! Inhalt der Liste kann nicht veraendert werden. </code> ===== Erzeugung von Arrays ===== <code python> # Mit einer for-Schlaufe w = [] # Leeres Array for i in range(11): w.append(i*i*i) # Am Schluss des Arrays ein neues Element anhängen print(w) # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] # The fancy way: q = [i*i for i in range(11)] # Quadratzahlen von 0 bis 100 print(q) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] </code> ==== Aufgabe 1 ==== Erzeugen Sie ein Array der Länge $n$ (z.B. 20) so, dass das erste Element 0, das zweite 1, und jedes folgende Element die Summe der beiden vorhergehenden ist. Die Länge $n$ soll sich ganz einfach im Code anpassen lassen. Für $n=20$ sollte das Resultat [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] sein. <hidden Lösungsvorschlag> <code python> n = 20 fib = [0,1] for i in range(2,n): fib.append(fib[i-2]+fib[i-1]) print(fib) </code> Der Quotient nähert sich $\frac{1}{\varphi}$, dem Kehrwert des Golden Schnitts, positive Lösung der Gleichung $1:x = x:(1-x)$. $\varphi$ ist auch als die "irrationalste" Zahl bekannt. D.h. um die Zahl mit gegebener Präzision durch eine Bruchzahl anzunähern ist Nenner grösser als für andere irrationale Zahlen. </hidden> Erzeugen Sie daraus ein Array der Länge $n-1$, das die Quotienten zweier aufeinanderfolgenden Einträge vom obigen Array enthält. Resultat: [0.0, 1.0, 0.5, 0.6666666666666666, 0.6, 0.625, 0.6153846153846154, 0.6190476190476191, 0.6176470588235294, 0.6181818181818182, 0.6179775280898876, 0.6180555555555556, 0.6180257510729614, 0.6180371352785146, 0.6180327868852459, 0.6180344478216818, 0.6180338134001252, 0.6180340557275542, 0.6180339631667066] Wissen Sie, welcher Zahl sich diese Folge nähert? <hidden Lösungsvorschlag> <code python> n = 20 fib = [0,1] for i in range(2,n): fib.append(fib[i-2]+fib[i-1]) print(fib) quotients = [] for i in range(1,n): # Achtung: es gibt nur n-1 Quotienten! quotients.append(fib[i-1]/fib[i]) print(quotients) </code> </hidden> ==== Aufgabe 2 ==== Erzeugen Sie ein Array mit den ersten $n$ (z.B. 100) Primzahlen. Bonus: Benutzen Sie das teilweise erstellte Array von Primzahlen, um effizienter die Primalität weiterer Kandidaten festestellen zu können. ==== Aufgabe 3 ==== Erzeugen Sie ein Array mit $n$ Einträgen, die alle True sein sollen, ausser die Einträge mit den Indizies 0 und 1 sollen False sein. Setzen Sie dann jeden zweiten Eintrag (ab Index 4) auf False (weil nicht prim). Dann jeden dritten Eintrag (ab Index $9=3\cdot 3$) auf False (weil nicht prim). Dann jeden fünften Eintrag (ab Index 25), etc. Dand jeden $p$-ten Eintrag (ab Index $p^2$), wobei $p$ eine Primzahl ist. Am Schluss erhalten Sie ein Array, das für jeden Index angibt, ob der Index prim ist oder nicht. ===== Mehrdimensionale Arrays ===== Ein mehrdimensionales Arrays ist einfach ein Array, das als Element wieder Arrays enthält. <code python> a = [[1,22],[333,4444]] print(a[0]) # [1, 22] print(a[0][0]) # 1 print(a[1][1]) # 4444 # Multiplikationstabelle, Fancy: tabelle = [[i*j for i in range(0,11)] for j in range(0,11)] print(tabelle[7]) # 7ner Reihe print(tabelle[9][6]) # 54 </code> lehrkraefte/blc/informatik/ffprg1-2019/arrays-lists.txt Last modified: 2019/02/26 10:02by Ivo Blöchliger