14.1 Die for-Schleife
In Python wird das Durchlaufen von Tupel-Elementen normalerweise mit einer for-Schleife realisiert. Das ist die gängigste Methode, die es dir erlaubt, einfach auf jedes Element des Tupels zuzugreifen und einen Codeblock dafür auszuführen.
Die for-Schleife
Die for-Schleife durchläuft jedes Element des Tupels, indem sie dem nach dem Schlüsselwort for angegebenen Variablenwert temporär den aktuellen Elementwert zuweist. Beispiel:
my_tuple = (1, 2, 3, 4, 5)
for number in my_tuple:
print(number)
Du hast bereits Erfahrung mit Listen und der for-Schleife, also lass uns einige praktische Beispiele ansehen:
Beispiel 1: Summieren der Tupel-Elemente
Schauen wir uns ein Beispiel an, bei dem wir alle Elemente eines Tupels summieren.
my_tuple = (10, 20, 30, 40, 50)
total = 0
for number in my_tuple:
total += number
print(f"Die Summe der Tupel-Elemente beträgt: {total}")
In diesem Beispiel erstellen wir ein Tupel my_tuple und eine Variable total, um die Summe der Elemente zu speichern. Mit der for-Schleife durchlaufen wir jedes Element des Tupels und fügen es total hinzu. Am Ende erhalten wir die Summe aller Tupel-Elemente.
Beispiel 2: Maximales Element finden
Jetzt schauen wir uns ein Beispiel an, bei dem wir das maximale Element in einem Tupel finden.
my_tuple = (5, 17, 23, 11, 2)
max_value = my_tuple[0]
for number in my_tuple:
if number > max_value:
max_value = number
print(f"Der maximale Wert im Tupel beträgt: {max_value}")
In diesem Beispiel initialisieren wir die Variable max_value mit dem ersten Element des Tupels. Dann durchlaufen wir alle Elemente des Tupels, vergleichen jedes Element mit dem aktuellen maximalen Wert und aktualisieren max_value, wenn wir einen höheren Wert finden.
14.2 Verschachtelte Tupel
Tupel können andere Tupel enthalten, und eine for-Schleife kann verwendet werden, um durch verschachtelte Datenstrukturen zu iterieren.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
for inner_tuple in nested_tuple:
for number in inner_tuple:
print(number, end=' ')
print()
In diesem Beispiel enthält nested_tuple Tupel. Wir verwenden verschachtelte for-Schleifen, um durch jedes Element der verschachtelten Tupel zu iterieren. Das Ergebnis der Ausführung:
1 2 3
4 5 6
7 8 9
14.3 For-Schleife mit Indizes
Genau wie bei Listen haben auch Tupel-Elemente Indizes, sodass man ihre Elemente mit einer for-Schleife (in Kombination mit der Funktion range()) durchlaufen kann. Das ermöglicht nicht nur den Zugriff auf die Elemente selbst, sondern auch auf ihre Positionen, was bei der Durchführung komplexerer Datenmanipulationen notwendig sein kann.
Grundlagen der indizierten Iteration
Um durch ein Tupel zu iterieren und Zugriff auf den Index jedes Elements zu erhalten, kann man folgenden Code verwenden:
my_tuple = ('a', 'b', 'c', 'd')
for i in range(len(my_tuple)):
print(f'Index: {i}, Element: {my_tuple[i]}')
Vorteile der Verwendung von Indizes
Mit Indizes ist es einfach, Algorithmen zu implementieren, die gleichzeitigen Zugriff auf mehrere Elemente eines Tupels erfordern, z.B. zum Vergleichen des aktuellen Elements mit dem vorherigen oder nächsten.
Beispiel:
my_tuple = (15, 20, 23, 18, 22, 19, 21)
for i in range(1, len(my_tuple)):
if my_tuple[i] > my_tuple[i - 1]: # Vergleichen des Elements mit dem vorherigen
print(f'{my_tuple[i]} ist größer als {my_tuple[i - 1]}')
Verwendung der for-Schleife mit Indizes zur Datenverarbeitung
Angenommen, wir haben ein Tupel mit Temperaturdaten für eine Woche und möchten die Durchschnittstemperatur berechnen, wobei wir extreme Werte (die niedrigste und die höchste Temperatur) ausschließen.
temperatures = (15, 20, 23, 18, 22, 19, 21)
sorted_temps = sorted(temperatures)
# Erste und letzte Temperatur ausschließen
filtered_temps = sorted_temps[1:-1]
average_temp = sum(filtered_temps) / len(filtered_temps)
print(f"Durchschnittstemperatur der Woche (ohne Extremwerte): {average_temp}")
14.4 Verwendung der Funktion enumerate()
In Python bietet die Funktion enumerate() eine bequeme Möglichkeit, durch Tupel-Elemente zu iterieren und gleichzeitig auf deren Indizes zuzugreifen. Das ist besonders nützlich, wenn man sowohl den Index als auch den Wert eines Listenelements innerhalb einer Schleife verarbeiten muss.
Grundlagen der Funktion enumerate()
Die Funktion enumerate() umhüllt das Tupel in ein spezielles Objekt und gibt einen Iterator zurück, der Wertpaare des Tupels produziert, bestehend aus dem Index und dem Wert des Tupel-Elements:
my_tuple = ('apple', 'banana', 'cherry')
for index, element in enumerate(my_tuple):
print(f'Index: {index}, Element: {element}')
Jetzt hast du nicht nur das Element, sondern auch seinen Index.
Vorteile von enumerate()
Die Verwendung von enumerate() macht den Code lesbarer und vermeidet die Notwendigkeit, Indizes manuell mit range(len(…)) zu verwalten. Das vereinfacht die Manipulation von Listenelementen, wie das Ändern, der Zugriff auf Elemente und das Durchführen von bedingten Prüfungen.
Verwendungsbeispiele
Manchmal muss man alle Indizes finden, an denen ein bestimmter Wert in einem Tupel auftaucht.
my_tuple = (1, 2, 3, 2, 4, 2, 5)
search_value = 2
indices = []
for index, value in enumerate(my_tuple):
if value == search_value:
indices.append(index)
print(f"Der Wert {search_value} taucht auf den Indizes auf: {indices}")
Dieser Code findet alle Indizes, an denen der Wert 2 im Tupel auftaucht:
Der Wert 2 taucht auf den Indizes auf: [1, 3, 5]
Filtern von Daten basierend auf Indizes
Betrachten wir ein Beispiel, bei dem wir Daten basierend auf Indizes filtern und nur Elemente mit geraden Indizes übrig lassen.
my_tuple = ('a', 'b', 'c', 'd', 'e', 'f')
filtered_tuple = tuple(value for index, value in enumerate(my_tuple) if index % 2 == 0)
print(f"Tupel mit Elementen an geraden Indizes: {filtered_tuple}")
Dieser Code erstellt ein neues Tupel, das nur die Elemente mit geraden Indizes enthält:
Tupel mit Elementen an geraden Indizes: ('a', 'c', 'e')
GO TO FULL VERSION