Der Titel dieses Tutorial ist etwas irritierend, denn in der Programmiersprache Python werden die Begriffe „Arrays“ und „Listen“ in der Regel synonym verwendet. Tatsächlich existieren aber unterschiedliche Datenstrukturen:
- Listen
- array.array
- numpy.array
Listen sind fester Bestandteil von Python, so dass sie genutzt werden können, ohne dass es der Installation eines zusätzlichen Pakets bedarf. Anders sieht es mit Arrays aus. Um sie verwenden zu können, exisiteren zwei Pakete: array und numpy. Dieser Artikel vermittelt einen kurzen Überblick über diese drei Typen.
Arrays (array.array)
Beginnen wir mit Arrays aus dem Paket array, auch wenn dies nicht naheliegend sein mag, schließlich wird in der Praxis primär mit Listen gearbeitet.
Beim Datentyp array.array handelt es sich um einen Wrapper für Arrays der Programmiersprache C. Dieses Array kann nur Elemente gleichen Typs enthalten (zum Beispiel nur Integer- oder Float-Werte).
Im folgenden Beispiel soll ein Array mit zehn Integer-Werten erstellt werden. Im Gegensatz zur Liste, muss dazu ein type code angegeben werden. Hier wird I, für unsigned int verwendet. Eine vollständige Übersicht zu den unterstützten Typen findet sich in der Dokumentation zu den Arrays.
# Das Modul array importieren
from array import array
# Ein Array mit Integer-Werten (unsigned int) erstellen
number_array = array('I', [0, 1, 2, 3, 4])
# Gibt die Anzahl der im Array vorhandenen Elemente aus
print("The length of this array: {0}".format(len(number_array)))
# Zeigt die Elemente des Arrays an<br>print("The elements of this array:")
for number in number_array:
print(number)Wie wir noch später sehen werden, ist man mit Listen deutlich flexibler. Warum sollte man also array verwenden? In der Praxis kommt er zum Einsatz, wenn man Extensions programmiert, und hierbei ein C-Array verwenden muss. Des Weiteren benötigen Listen deutlich mehr Speicherplatz.
Arrays (numpy.array)
Jetzt werfen wir einen Blick auf das Paket numpy, mithin den Typ numpy.array. Auch hier erstellen wir zunächst ein Array mit fünf Integer-Werten. Die Elemente sollten gleichen Datentyps sein. Im Gegensatz zu einem Array aus dem Modul array muss hier aber kein type code angegeben werden.
import numpy as np
number_array = np.array([0, 1, 2, 3, 4])
print("Elements of the numpy array: {0}".format(number_array))
[0, 1, 2, 3, 4]Die Verwendung von Numpy-Arrays bietet sich an, wenn mathematische Operationen im Vordergrund stehen (und man numerische Werte gleichen Typs nutzt).
Es ist zwar möglich, ein numpy-array mit Werten unterschiedlichen Typs zu erstellen, allerdings werden in so einem Fall alle Elemente des Arrays in den Typ numpy.str_ konvertiert, wie folgendes Beispiel zeigt:
values = np.array([10, "Hannover", 22.5])
print(values) # -> ['10' 'Hannover' '22.5']
print(type(values[0]))
<class 'numpy.str_'>Dies bedeutet, dass es erforderlich sein kann, zunächst einen Wert vom Typ numpy.str_ wieder in einen anderen Typ zu konvertieren. Andernfalls kann es zu nicht erwünschten Resultaten kommen:
values = np.array([10, "Hannover", 22.5])
x = values[0]
print(x * 10)
10101010101010101010Hier ergibt 10 * 10 den Wert 10101010101010101010. Bei Verwendung einer Liste würde hingegen das Ergebnis 100 sein, da zwei Integer-Werte multipliziert werden.
Listen
Am populärsten und somit in der Praxis am häufigsten anzutreffen sind die Listen. Sie benötigen zwar relativ viel Speicher, sind aber äußerst flexibel. Denn im Gegensatz zu den bisherigen Arrays, können Listen mit Werten unterschiedlichen Typs erstellt werden:
values = [10, "Hannover", 22.5]
print(values)
[10, "Hannover", 22.5]Anwendbare Operatoren
Wie beim Datentyp String können auch bei Listen der []-Operator und die Funktion len() verwendet werden:
values = [10, "Hannover", 22.5]
x = values[0]
print(x)
10
print(len(values))
3Und der +-Operator sowie der Vergleichsoperator == funktionieren ebenso:
a = [4, 2, 22, 53]
b = [7, 101]
print(a + b)
[4, 2, 22, 53, 7, 101]
x = ["Hannover", "Kassel"]
y = ["Hannover", "Kassel"]
print(x == y)
TrueEine Liste kann mithilfe einer for-Schleife durchlaufen werden:
numbers = [4, 27, 34, 2, 11]
for i in number:
print(i)Der in-Operator kann auch dazu genutzt werden, das Vorhandensein eines bestimmten Elements zu überprüfen:
print(23 in numbers)
FalseListen sind veränderbar
Wie man den bisherigen Beispielen entnehmen kann, sind Listen den Strings sehr ähnlich. Denn es liegt ebenfalls eine Sequenz (von Elementen) vor. Es gibt aber einen wesentlichen Unterschied: Im Gegensatz zu Strings, sind Listen veränderbar (mutable). Folgendes ist also möglich:
numbers = [4, 27, 34, 2]
numbers[0] = 10
print(numbers)
[10, 27, 34, 2]Darüber hinaus existieren zahlreiche Methoden, mit denen beispielsweise Elemente zu einer Liste hinzugefügt oder von einer Liste entfernt werden können. Näheres dazu habe ich in einem separaten Blogbeitrag beschrieben.
Zuletzt aktualisiert am 23. Januar 2026