Python Tuple

Table of Contents

In diesem Artikel erfahren Sie alles über Python-Tupel. Genauer gesagt, was sind Tupel, wie man sie erstellt, wann man sie verwendet und mit welchen Methoden Sie vertraut sein sollten.

 

Ein Tupel in Python ähnelt einer Liste. Der Unterschied zwischen den beiden besteht darin, dass wir die Elemente eines Tupels nicht ändern können, wenn es einmal zugewiesen ist, während wir die Elemente einer Liste ändern können.

 

Creating a Tuple

 

Ein Tupel wird erstellt, indem alle Elemente (Elemente) in Klammern gesetzt werden (), durch Kommata abgetrennt. Die Klammern sind optional, es empfiehlt sich jedoch, sie zu verwenden.

Ein Tupel kann eine beliebige Anzahl von Elementen haben und sie können von unterschiedlichem Typ sein (Integer, Float, Liste, String) usw.).

# Verschiedene Arten von Tupeln

# Leeres Tupel
my_tuple = ()
print(my_tuple)

#Tupel mit ganzen Zahlen
my_tuple = (1, 2, 3)
print(my_tuple)

# Tupel mit gemischten Datentypen
my_tuple = (1, "Hello", 3.4)
print(my_tuple)

# verschachteltes Tupel
my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
print(my_tuple)

 

Output

()
(1, 2, 3)
(1, 'Hello', 3.4)
('mouse', [8, 4, 6], (1, 2, 3))

 

Ein Tupel kann auch ohne Klammern erstellt werden. Dies wird als Tupelpackung bezeichnet.

my_tuple = 3, 4.6, "hund"
print(my_tuple)

# Tupel-Entpacken ist auch möglich
a, b, c = my_tuple

print(a)      # 3
print(b)      # 4.6
print(c)      # hund

 

Output

(3, 4.6, 'hund')
3
4.6
hund

 

Das Erstellen eines Tupels mit einem Element ist etwas schwierig.

Es reicht nicht aus, ein Element in Klammern zu setzen. Wir benötigen ein nachgestelltes Komma, um anzuzeigen, dass es sich tatsächlich um ein Tupel handelt.

my_tuple = ("hello")
print(type(my_tuple))  # <class 'str'>

# Creating a tuple having one element
my_tuple = ("hello",)
print(type(my_tuple))  # <class 'tuple'>

# Parentheses is optional
my_tuple = "hello",
print(type(my_tuple))  # <class 'tuple'>

 

Output

<class 'str'>
<class 'tuple'>
<class 'tuple'>

 


 

Access Tuple Elements

 

Es gibt verschiedene Möglichkeiten, auf die Elemente eines Tupels zuzugreifen.

 

1. Indexing

 

Wir können den Indexoperator verwenden [] um auf ein Element in einem Tupel zuzugreifen, wobei der Index bei 0 beginnt.

 

Ein Tupel mit 6 Elementen hat also Indizes von 0 bis 5. Der Versuch, auf einen Index außerhalb des Tupelindexbereichs (6,7,… in diesem Beispiel) zuzugreifen, führt zu einem IndexError.

 

Der Index muss eine ganze Zahl sein, daher können wir weder Float noch andere Typen verwenden. Dies führt zu TypeError.

Ebenso wird auf verschachtelte Tupel über die verschachtelte Indizierung zugegriffen, wie im folgenden Beispiel gezeigt.

# Zugriff auf Tupelelemente mithilfe der Indizierung
my_tuple = ('p','e','r','m','i','t')

print(my_tuple[0])   # 'p' 
print(my_tuple[5])   # 't'

# IndexError: Listenindex außerhalb des zulässigen Bereichs
# print(my_tuple[6])

# Index muss eine ganze Zahl sein
# TypeError: Listenindizes müssen ganze Zahlen sein, keine Gleitkommazahlen
# my_tuple[2.0]

# verschachteltes Tupel
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))

# verschachtelter Index
print(n_tuple[0][3])       # 's'
print(n_tuple[1][1])       # 4

 

Output

p
t
s
4

 


 

 

2. Negative Indexing

Python erlaubt eine negative Indizierung für seine Sequenzen.

Der Index von -1 bezieht sich auf das letzte Element, -2 auf das vorletzte Element und so weiter.

# Negative indexing for accessing tuple elements
my_tuple = ('p', 'e', 'r', 'm', 'i', 't')

# Output: 't'
print(my_tuple[-1])

# Output: 'p'
print(my_tuple[-6])

 

Output

t
p

 


 

 

3. Slicing

 

Wir können auf eine Reihe von Elementen in einem Tupel zugreifen, indem wir den Slicing-Operator Doppelpunkt verwenden :.

 

# Zugreifen auf Tupelelemente mit Slicing
my_tuple = ('p','r','o','g','r','a','m','e','s')

# Elemente 2. bis 4.
# Output: ('r', 'o', 'g')
print(my_tuple[1:4])

# Elemente beginnend bis 2.
# Output: ('p', 'r')
print(my_tuple[:-7])

# Elemente 8. bis Ende
# Output: ('e', 's')
print(my_tuple[7:])

# Elemente von Anfang bis Ende
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'e', 's')
print(my_tuple[:])

 

Output

('r', 'o', 'g')
('p', 'r')
('e', 's')
('p', 'r', 'o', 'g', 'r', 'a', 'm', 'e', 's')

 

Das Slicing lässt sich am besten visualisieren, indem man den Index als zwischen den Elementen liegend betrachtet, wie unten gezeigt. Wenn wir also auf einen Bereich zugreifen möchten, benötigen wir den Index, der den Teil aus dem Tupel schneidet.

 

Changing a Tuple

 

Im Gegensatz zu Listen sind Tupel unveränderlich.

Das bedeutet, dass Elemente eines Tupels, nachdem sie einmal zugewiesen wurden, nicht mehr geändert werden können. Wenn das Element jedoch selbst ein veränderlicher Datentyp wie eine Liste ist, können seine verschachtelten Elemente geändert werden.

Wir können auch anderen Werten ein Tupel zuweisen (Neuzuweisung).

 

# Ändern von Tupelwerten
my_tuple = (4, 2, 3, [6, 5])


# TypeError: 'tuple'-Objekt unterstützt keine Artikelzuweisung
# my_tuple[1] = 9

# Das Element des veränderlichen Elements kann jedoch geändert werden
my_tuple[3][0] = 9    # Output: (4, 2, 3, [9, 5])
print(my_tuple)

# Tupel können neu zugewiesen werden
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'e', 's')

# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'e', 's')
print(my_tuple)

 

Output

(4, 2, 3, [9, 5])
('p', 'r', 'o', 'g', 'r', 'a', 'm', 'e', 's')

 

Wir können benutzen + Operator, um zwei Tupel zu kombinieren. Das nennt man concatenation.

 

Wir können auch repeat die Elemente in einem Tupel für eine bestimmte Anzahl von Malen mit der * operator.

Beide + und * Operationen führen zu einem neuen Tupel.

# Concatenation
# Output: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))

# Repeat
# Output: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)

 

Output

(1, 2, 3, 4, 5, 6)
('Repeat', 'Repeat', 'Repeat')

 


 

 

Deleting a Tuple

 

Wie oben besprochen, können wir die Elemente in einem Tupel nicht ändern. Das bedeutet, dass wir keine Elemente aus einem Tupel löschen oder entfernen können.

Das vollständige Löschen eines Tupels ist jedoch mit dem Schlüsselwort del möglich.

# Tupel löschen
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'e', 's')

# Elemente können nicht gelöscht werden
# TypeError: 'tuple' object doesn't support item deletion
# del my_tuple[3]

# Kann ein ganzes Tupel löschen
del my_tuple

# NameError: name 'my_tuple' ist nicht definiert
print(my_tuple)

 

Output

Traceback (most recent call last):
  File "<string>", line 12, in <module>
NameError: name 'my_tuple' is not defined

 


 

 

Tuple Methods

Methoden, die Elemente hinzufügen oder Elemente entfernen, sind mit Tupel nicht verfügbar. Es stehen nur die folgenden beiden Methoden zur Verfügung.

Einige Beispiele für Python-Tupelmethoden:

my_tuple = ('a', 'p', 'p', 'l', 'e',)

print(my_tuple.count('p'))  # Output: 2
print(my_tuple.index('l'))  # Output: 3

 

Output

2
3

 


 

 

Other Tuple Operations

 

1. Tuple Membership Test

 

Wir können mit dem Schlüsselwort testen, ob ein Element in einem Tupel vorhanden ist oder nicht in.

 

# Mitgliedschaftstest im Tupel
my_tuple = ('a', 'p', 'p', 'l', 'e',)

# In operation
print('a' in my_tuple)
print('b' in my_tuple)

# Not in operation
print('g' not in my_tuple)

 

Output

True
False
True

 


 

 

2. Iterating Through a Tuple

 

Wir können a . verwenden for Schleife, um jedes Element in einem Tupel zu durchlaufen.

 

# Using a for loop to iterate through a tuple
for name in ('John', 'Kate'):
    print("Hello", name)

 

Output

Hello John
Hello Kate

 


 

 

Advantages of Tuple over List

 

Da Tupel Listen sehr ähnlich sind, werden beide in ähnlichen Situationen verwendet. Es gibt jedoch bestimmte Vorteile, ein Tupel gegenüber einer Liste zu implementieren. Nachfolgend sind einige der wichtigsten Vorteile aufgeführt:

 

  • Im Allgemeinen verwenden wir Tupel für heterogene (unterschiedliche) Datentypen und Listen für homogene (ähnliche) Datentypen.
  • Da Tupel unveränderlich sind, ist das Durchlaufen eines Tupels schneller als mit einer Liste. Es gibt also eine leichte Leistungssteigerung.
  • Tupel, die unveränderliche Elemente enthalten, können als Schlüssel für ein Wörterbuch verwendet werden. Bei Listen ist dies nicht möglich.
  • Wenn Sie Daten haben, die sich nicht ändern, wird durch die Implementierung als Tupel gewährleistet, dass sie schreibgeschützt bleiben.