Python Programming

Effiziente Vorabzuweisung von Listen und Arrays in Python

Spread the love

Python-Listen passen ihre Größe dynamisch an, aber die Vorabzuweisung kann die Leistung, besonders bei großen Datensätzen, erheblich steigern. Dieser Artikel untersucht effiziente Vorabzuweisungstechniken für Listen und andere sequenzielle Datenstrukturen.

Inhaltsverzeichnis

Vorabzuweisung von Python-Listen

Während Python im Gegensatz zu einigen anderen Sprachen keine direkt vorab festgelegte Listen unterstützt, können wir sie effizient mit List Comprehensions oder dem *-Operator erstellen.

Methode 1: List Comprehension

Ideal zum Erstellen von Listen einer bestimmten Größe, die mit einem einzelnen, sich wiederholenden Wert gefüllt sind:


size = 10
my_list = [0] * size  # Liste mit 10 Nullen
print(my_list)  # Ausgabe: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

my_list = [None] * size # Liste mit 10 None-Werten
print(my_list) # Ausgabe: [None, None, None, None, None, None, None, None, None, None]

Methode 2: Verwendung von list() mit einem Generator

Bietet Flexibilität für komplexere Initialisierungen, bei denen jedes Element einen eindeutigen Wert benötigt:


size = 5
my_list = list(range(size))  # Erstellt [0, 1, 2, 3, 4]
print(my_list)

my_list = list(i**2 for i in range(size))  # Erstellt [0, 1, 4, 9, 16]
print(my_list)

Wichtiger Hinweis: Die Vorabzuweisung optimiert in erster Linie die anfängliche Befüllung, indem die Größenanpassung minimiert wird. Das Anhängen von Elementen über die anfängliche Größe hinaus löst weiterhin eine dynamische Größenanpassung aus.

Vorabzuweisung von NumPy-Arrays

NumPy-Arrays eignen sich hervorragend für numerische Berechnungen und große Datensätze. Sie ermöglichen die direkte Angabe von Größe und Datentyp:


import numpy as np

size = 10
my_array = np.zeros(size, dtype=int)  # Array mit 10 Nullen (Integer)
print(my_array)

my_array = np.empty(size, dtype=float)  # Array mit 10 nicht initialisierten Gleitkommazahlen (vorsichtig verwenden!)
print(my_array)

my_array = np.arange(size)  # Array [0, 1, 2, ..., 9]
print(my_array)

NumPy bietet verschiedene Funktionen zum Erstellen von Arrays mit unterschiedlichen Anfangswerten und Datentypen, wodurch die Effizienz numerischer Operationen deutlich gesteigert wird.

Vorabzuweisung mit array.array

Das Modul array.array bietet eine kompakte Speicherung für homogene Daten und erfordert die Angabe des Datentyps:


import array

size = 5
my_array = array.array('i', [0] * size)  # Array mit 5 Integern, initialisiert auf 0
print(my_array)

'i' gibt den Typ vorzeichenbehaftete Ganzzahl an; weitere Typcodes finden Sie in der Dokumentation.

Die richtige Datenstruktur auswählen

Die beste Wahl (Liste, NumPy-Array, array.array) hängt von Ihrer Anwendung und Ihren Daten ab. NumPy-Arrays werden aufgrund ihrer Leistungsvorteile im Allgemeinen für numerische Berechnungen bevorzugt. Für einfache, homogene Daten kann array.array effizienter sein als Listen. Python-Listen bleiben vielseitig einsetzbar für allgemeine Zwecke mit gemischten Datentypen, trotz ihrer dynamischen Größenanpassung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert