Python: Gemeinsamkeiten und Unterschiede von Tupeln und Listen
Gemeinsamkeiten von Tupeln und Listen
- Beide sind Sequenzen:
- Sowohl Listen als auch Tupel sind Sequenztypen in Python. Das bedeutet, sie unterstützen Indexierung, Slicing und Iteration.
liste = [1, 2, 3]
tupel = (1, 2, 3)
# Indexierung
print(liste[0]) # 1
print(tupel[0]) # 1
# Iteration
for i in liste:
print(i) # 1, 2, 3
for i in tupel:
print(i) # 1, 2, 3
- Beide können heterogene Datentypen speichern:
- Sie können sowohl gleiche Datentypen als auch unterschiedliche in einer einzigen Sequenz enthalten.
liste = [1, "Zwei", 3.0, True]
tupel = (1, "Zwei", 3.0, True)
- Zugriff mit Indexen:
- Bei beiden kann über einen Index (
[]
) auf die Elemente zugegriffen werden. Der Index beginnt bei0
.
- Bei beiden kann über einen Index (
liste = [10, 20, 30]
tupel = (10, 20, 30)
print(liste[1]) # 20
print(tupel[1]) # 20
- Unterstützung für Slicing:
- Bei beiden lassen sich Teilbereiche mittels Slicing auslesen.
liste = [1, 2, 3, 4, 5]
tupel = (1, 2, 3, 4, 5)
print(liste[1:4]) # [2, 3, 4]
print(tupel[1:4]) # (2, 3, 4)
- Beide unterstützen das
in
-Keyword:- Es kann überprüft werden, ob ein Element in der Sequenz vorhanden ist.
liste = [1, 2, 3]
tupel = (1, 2, 3)
print(2 in liste) # True
print(4 in tupel) # False
Unterschiede zwischen Tupeln und Listen
Eigenschaft | Tupel | Liste |
---|---|---|
Mutabilität | Tupel sind unveränderlich (immutable). | Listen sind veränderlich (mutable). |
Syntax | Tupel verwenden () oder sind komma-getrennt. | Listen werden mit [] konstruiert. |
Performance | Tupel sind schneller als Listen. | Listen sind langsamer als Tupel. |
Hinzufügen/Entfernen | Tupel unterstützen keine Methoden wie append , remove , etc. | Listen bieten flexible Methoden wie append , pop , etc. |
Zweck/Verwendung | Tupel werden genutzt für fixierte Daten (z. B. Koordinaten, Konfigurationsdaten). | Listen werden genutzt für Daten, die sich ändern können. |
Speicherverbrauch | Tupel benötigen weniger Speicher. | Listen verbrauchen mehr Speicher. |
Methoden | Tupel haben nur wenige Methoden wie count() und index() . | Listen bieten viele Methoden wie append() , extend() , etc. |
Typprüfung (hashable) | Tupel sind hashable, wenn die enthaltenen Objekte hashable sind (z. B. sie können als Schlüssel in Dictionaries verwendet werden). | Listen sind nicht hashable und können deshalb nicht als Schlüssel in Dictionaries genutzt werden. |
Beispiele für Unterschiede
1. Unveränderlichkeit von Tupeln
tupel = (1, 2, 3)
# tupel[0] = 5 # Führt zu einem Fehler, da Tupel unveränderlich sind.
liste = [1, 2, 3]
liste[0] = 5 # Listen können verändert werden.
print(liste) # [5, 2, 3]
2. Methoden: Liste vs. Tupel
liste = [1, 2, 3]
liste.append(4) # Fügt ein Element hinzu
print(liste) # [1, 2, 3, 4]
tupel = (1, 2, 3)
# tupel.append(4) # Tupel besitzt die Methode `append` nicht.
3. Speicherverbrauch
Tupel verbrauchen weniger Speicher als Listen mit denselben Elementen.
import sys
liste = [1, 2, 3]
tupel = (1, 2, 3)
print(sys.getsizeof(liste)) # Speicherverbrauch der Liste
print(sys.getsizeof(tupel)) # Speicherverbrauch des Tupels
Zusammenfassung
Verwende:
- Tupel, wenn du feststehende Daten abbilden möchtest, die nicht modifiziert werden sollen.
- Listen, wenn die Daten häufig geändert oder bearbeitet werden (z. B. Hinzufügen, Entfernen, Aktualisieren von Elementen).