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.
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.
Erzeugung von Arrays
# 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]
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.
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?
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.
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