Programmierkurs
für Naturwissenschaftler/innen

Array

Arrays werden in verschiedenen Sprachen sehr unterschiedlich gehandhabt, seien Sie also vorsichtig, wenn Sie Array in anderen Sprachen lernen.

Was ist ein Array? (Zuerst ein kurzer Überblick)

Ich werde später mehr dazu sagen, aber zuerst sehen wir uns kurz an, was ein Array ist.

Angenommen, Sie haben einige experimentelle Daten, die Sie verarbeiten (berechnen) müssen. Sie haben nun z. B. 100 Daten und Sie haben folgendes geschrieben:

data1 = 0.10
data2 = 1.2
data3 = 3.2
  :
  :
data100 = 1.1

Um die Summe zu erhalten, müssen Sie folgendes schreiben:

summation = data1 + data2 + (omit) + data100

Sehr umständlich!

Wenn Sie zusätzliche Daten erhalten, müssen Sie das Folgende hinzufügen

data101 = 0.92
data102 = 5.8
data103 = 7.2
  :
  :

und auch das Programm ändern. Dies ist immer noch einfach, da es sich nur um eine einfache Summe handelt, aber kompliziertere Berechnungen (wie die Berechnung der Varianz) werden viel umständlicher sein. Es kann sogar schneller sein, sie von Hand zu berechnen.

An dieser Stelle kommen Arrays ins Spiel. Die erhaltenen Daten können wie folgt geschrieben werden:

data = [0.10, 1.2, 3.2, ...]

In diesem Fall können die einzelnen Daten als data[0], data[1], … verwendet werden.

Das obige Programm zur Ermittlung der Summe kann theoretisch wie folgt umgeschrieben werden

summation = data[0] + data[1] + (omit) + data[99]

aber noch viel besser:

summation = 0
for i in range(len(data)):
    summation += data[i]

(len() wird später in diesem Artikel behandelt).

Wenn sich die Anzahl der Daten oder der Inhalt des Arrays data ändert, muss sich der Summierungsteil überhaupt nicht ändern. Dadurch wird das Programm kürzer und damit lesbarer.

Also: ein Array ist eine Sammlung von Daten (Werten).

In Python wird dieser Datentyp Liste genannt, wird aber in diesem Dokument als Array bezeichnet.

Außerdem kann das obige Programm in Python etwas eleganter geschrieben werden. Dies wird im Folgenden beschrieben.

Wie man Arrays verwendet

Schauen wir uns die Arrays genauer an.

Definition eines Arrays

Um ein Array zu definieren wird es, wie Sie im obigen Beispiel sehen können, wie folgt geschrieben:

data = [10, 20, 30]

Die linke Seite ist die gleiche wie die bisherige Definition der Variablen. Die rechte Seite ist die Art und Weise, wie man ein Array schreibt. Die Daten werden in eckigen Klammern, getrennt durch Kommata, angegeben. Jede Angabe (in diesem Fall 10, 20 usw.) wird als Element des Arrays (bzw. Arrayelement) bezeichnet.

In Python ist es möglich, den ganzen Inhalt eines Arrays mit print() anzuzeigen.

Geben Sie das folgende Programm ein und führen Sie es aus.

data = [10, 20, 30]
print(data)

Ergebnis

Verwendung von Elementen eines Arrays

Um mit einzelnen Elementen eines Arrays zu arbeiten, verwenden Sie den Variablennamen + [ + Zahl + ], wie in data[1]. Diese Zahl wird als Index bezeichnet. Arrays von Python werden von 0 an indiziert. Um das erste Element anzuzeigen, verwenden Sie daher print(data[0]).

Geben Sie das folgende Programm ein und führen Sie es aus.

data = [10, 20, 30]
print(data[0])
print(data[1])
print(data[2])

Ergebnis

Wie man die Anzahl der Elemente (Länge) eines Arrays bestimmt

Die Anzahl der Elemente in einem Array wird oft als Länge bezeichnet. Die Länge eines Arrays kann mit len(array) ermittelt werden. Zum Beispiel:

data = [1, 2, 5]
print(len(data))

Wenn Sie dieses Programm ausführen, wird als Ergebnis 3 angezeigt.

Beachten Sie, dass len(array) die Anzahl der Elemente im Array ist. Andererseits ist zu beachten, dass der letzte Index eines Arrays len(array) - 1 ist.

Wenn Sie die Summe eines Arrays berechnen wollen, können Sie schreiben:

data = [1.2, 3, 5, 1.1]
summation = 0

for i in range(len(data)):
    summation += data[i]

Außerdem dürfen Sie die Anzahl der Daten nicht direkt in das Programm eingeben:

for i in range(4):    # ! schlechter Schreibstil !
    summation += data[i]

Dies ist syntaktisch nicht falsch, aber die direkte Angabe der Anzahl von Elementen im Programm in Form von einer konkreten Zahl (eine solche Schreibweise wird als Hartkodierung (eng. hard coding) bezeichnet) ist ein Nährboden für Fehler. Wenn sich also die Anzahl der Elemente im Array ändert, muss nicht nur das Array selbst, sondern auch die for-Schleife geändert werden. Aber Sie sollten nur die Daten ändern müssen, wenn sich die Anzahl der Daten ändert.

Verwenden Sie immer len(), um die Länge eines Arrays zu ermitteln.

Geben Sie das folgende Programm ein und führen Sie es aus.

data = [10, 20, 30]
print(data)
print(len(data))

for i in range(len(data)):
    print("data[", i, "] =", data[i])

Ergebnis

Geben Sie das folgende Programm ein und führen Sie es aus.

data = [10, 20, 30]
print(data)
print(len(data))

summation = 0
for i in range(len(data)):
    summation += data[i]
print(summation)

Ergebnis

  1. Geben Sie das folgende Programm ein und führen Sie es aus.

    # ! Schlechte Schreibweise !
    
    data = [10, 20, 30]
    print(data)
    print(len(data))
    
    summation = 0
    for i in range(3):
        summation += data[i]
    print(summation)
  2. Geben Sie zusätzliche Daten in data in der 3. Zeile ein, zum Beispiel:

    data = [10, 20, 30, 40]

    und ändern Sie das Programm, damit die Summe aller Elemente des Arrays berechnet wird (d. h. wenn Sie 40 als neues Element hinzufügen, sollten Sie 100 als Endergebnis erhalten).

  3. Überlegen Sie, warum dies keine gute Art zu schreiben ist.

Ergebnis

Array und for

Bislang wurden die Elemente eines Arrays immer durch Indizes angegeben. Das liegt daran, dass wir Sie mit der Beziehung zwischen Arrays und Indizes vertraut machen möchten.

In Python kann diese Schleife jedoch etwas sauberer geschrieben werden.

data = [10, 20, 30]
print(data)
print(len(data))

summation = 0
for elem in data:
    summation += elem
print(summation)

Auf diese Weise geschrieben, führt die Anweisung for nacheinander eine Schleife mit den Elementen von data in elem aus.

Im Vergleich zum vorherigen Beispiel hat sich

for i in range(len(data)):
    summation += data[i]

in

for elem in data:
    summation += elem

geändert. Die Variable i ist nicht mehr vorhanden und das Programm ist kürzer.

Dies ist ein eher pythonartiger (wird manchmal als pythonisch (eng. pythonic) bezeichnet) Schreibstil.

Hier wurde die Variable in for als elem (statt i) geschrieben, um deutlich zu machen, dass es sich um ein Element und nicht um einen Index handelt. Aus grammatikalischer Sicht kann i so stehen gelassen werden, aber i wird normalerweise für ganzzahlige Werte zum Zählen (wie (0,) 1, 2, 3, …) verwendet (solche Variablen werden manchmal auch als Zähler bezeichnet), deshalb sollte es hier vermieden werden.

Führen Sie jedes der beiden folgenden Programme aus. Prüfen Sie, wo und wie das erste und das zweite Programm sich entsprechen.

data = [10, 20, 30]

for i in range(len(data)):
    print(data[i])
data = [10, 20, 30]

for elem in data:
    print(elem)

Ergebnis

Hinweis zur Initialisierung eines Arrays

Wie bereits erläutert, muss bei der Verwendung eines Arrays dieses zunächst definiert werden, z. B.:

data = [1, 2, 3]

Aber vor Definition von data kann man nicht wie folgt schreiben:

data[0] = 1.2

Wenn Sie in Ihrem Programm ein Element eines Arrays hinzufügen möchten, können Sie array.append(element) schreiben:

data = []        # data ist ein (leeres) Array
data.append(10)

Dies bedeutet, dass ein Element zu diesem Array (am Ende) hinzugefügt wird.

Beachten Sie, dass Sie nicht wie folgt schreiben können:

data = []
data[0] = 10    # Fehler!

Mit anderen Worten:

  • Eine bereits bestehenden Elemente eines Arrays können umgeschrieben werden als data[0] = 1.2 usw.

  • Elemente von einem Array, die noch nicht existieren, können nur durch spezielle Methoden (z. B. append()1) hinzugefügt werden.

append() kann auch für bereits definierte Arrays verwendet werden, d. h. wenn Sie

data = [10, 20, 30]
data.append(40)

print(data)

schreiben, erhalten Sie [10, 20, 30, 40] als das Ergebnis.

Geben Sie das folgende Programm ein und führen Sie es aus. Was passiert und warum?

data = []

for i in range(10):
    data.append(i * 10)

print(data)

Ergebnis

(Fortgeschrittene) Kopieren eines Arrays

Obwohl dies etwas kompliziert ist, wird das Folgende hier erklärt, weil man oft Fehler macht.

Seien Sie vorsichtig, wenn Sie von Kopieren eines Arrays sprechen. Wenn Sie eine Kopie eines Arrays erstellen möchten und das Folgende schreiben, werden Sie wahrscheinlich nicht das erwartete Ergebnis erhalten.

array1 = [1, 2, 3]
array2 = array1

Sie könnten wie folgt schreiben, um das erste Element von array1 zu ändern:

array1[0] = 2

Mal sehen, was hier passiert.

Überlegen Sie, was passiert (oder angezeigt wird), wenn Sie das folgende Programm ausführen. Führen Sie es dann aus.

array1 = [1, 2, 3]
array2 = array1

print("Initial values")
print(array1)
print(array2)

array1[0] = 2

print("After change")
print(array1)
print(array2)

Ergebnis

Man würde erwarten, dass nur array1 geändert wird, also dass man

[2, 2, 3]
[1, 2, 3]

erhält, aber in Wirklichkeit wurde auch array2 geändert. Was ist hier eigentlich los?

In Bezug auf das Whiteboard bedeutet dies, dass ein zusätzlicher Name auf dem Whiteboard für das Array vergeben wurde2.

/images/whiteboard-array-empty.png

Um ein Array zu kopieren, müssen Sie daher zunächst ein neues Array erstellen und dann die Elemente einzeln kopieren. Es gibt mehrere Möglichkeiten, eine Kopie eines Arrays zu erstellen, aber ich zeige Ihnen nur die einfachste Methode.

array1 = [1, 2, 3]
array2 = []

for elem in array1:
    array2.append(elem)

# Oder:
# for i in range(len(array1)):
#     array2.append(array1[i])

Überlegen Sie, was passiert (angezeigt wird), wenn Sie das folgende Programm ausführen. Versuchen Sie dann, ihn auszuführen. Vergleichen Sie sie mit der obigen Übung und stellen Sie die Unterschiede fest.

array1 = [1, 2, 3]
array2 = []

for elem in array1:
    array2.append(elem)

# Oder:
# for i in range(len(array1)):
#     array2.append(array1[i])

print("Initial values")
print(array1)
print(array2)

array1[0] = 2

print("After change")
print(array1)
print(array2)
Ergebnis

Funktionen und Arrays

In Python können Sie Arrays als Argumente und Rückgabewerte von Funktionen verwenden.

Es folgt ein Beispiel für eine Funktion, die ein Array als Argument verwendet (der Rückgabewert in diesem Beispiel ist eine normale Zahl).

def sum_array(arr):
    summation = 0
    for i in range(len(arr)):
        summation += arr[i]
    return summation

data = [10, 20, 30]
print(sum_array(data))

Geben Sie dieses Programm ein und führen Sie es aus.

Ergebnis

Übungen

Machen Sie die folgenden Übungen zur Wiederholung. Es ist anzuraten, dass Sie zumindest die erste Übung durchführen.

Schreiben Sie eine Funktion, die ein Array als Argument nimmt, seinen Mittelwert berechnet und ihn zurückgibt. Geben Sie auch data = [71, 80, 89] als Daten ein und verwenden Sie diese Funktion, um den Mittelwert dieser Daten zu berechnen.

Ergebnis

Schreiben Sie eine Funktion, die ein Array als Argument nimmt, seine Varianz berechnet und sie zurückgibt. Geben Sie auch data = [71, 80, 89] als Daten ein und verwenden Sie diese Funktion, um die Varianz dieser Daten zu berechnen.

Ergebnis

Zusammenfassung

Auf dieser Seite haben Sie über Arrays gelernt.

  • Ein Array ist eine Sammlung von Daten.

  • Ein Array kann definiert werden als data = [1, 2, 3] usw.

  • Jedes Element kann durch einen Index angegeben werden.

  • Array-Indizes beginnen bei 0.

  • Die Anzahl der Elemente in einem Array kann als len(array) ermittelt werden.


1

Es gibt noch weitere, aber sie werden in diesem Dokument nicht behandelt.

2

Diese Erklärung ist nicht ganz korrekt. Es erfordert etwas mehr Wissen, um genau zu wissen, was es ist, also lassen wir es dabei.