Wie man prüft, ob ein Tupel in Python in aufsteigender Reihenfolge sortiert ist

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob ein Tupel (Tuple) in Python in aufsteigender Reihenfolge sortiert ist. Tupel sind, ähnlich wie Listen, unveränderliche Sequenzen. Da Tupel nicht direkt mit Methoden sortiert werden können, die die ursprüngliche Sequenz ändern, werden in diesem Lab alternative Ansätze untersucht.

Das Lab zeigt, wie Sie die sorted()-Funktion verwenden können, um aus einem Tupel eine neue sortierte Liste zu erstellen und diese wieder in ein Tupel umzuwandeln. Es stellt auch die Funktionen all() und zip() als Werkzeuge vor, um zu überprüfen, ob ein Tupel bereits in aufsteigender Reihenfolge sortiert ist.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/lists -.-> lab-559590{{"Wie man prüft, ob ein Tupel in Python in aufsteigender Reihenfolge sortiert ist"}} python/tuples -.-> lab-559590{{"Wie man prüft, ob ein Tupel in Python in aufsteigender Reihenfolge sortiert ist"}} python/build_in_functions -.-> lab-559590{{"Wie man prüft, ob ein Tupel in Python in aufsteigender Reihenfolge sortiert ist"}} python/data_collections -.-> lab-559590{{"Wie man prüft, ob ein Tupel in Python in aufsteigender Reihenfolge sortiert ist"}} end

Lernen Sie über sortierte Tupel (Tuples)

In diesem Schritt lernen Sie über sortierte Tupel in Python kennen. Tupel sind ähnlich wie Listen, aber sie sind unveränderlich (immutable), was bedeutet, dass ihre Elemente nach der Erstellung nicht geändert werden können. Ein sortiertes Tupel ist einfach ein Tupel, dessen Elemente in einer bestimmten Reihenfolge angeordnet sind, typischerweise aufsteigend oder absteigend.

Da Tupel unveränderlich sind, können Sie sie nicht direkt mit Methoden wie sort() sortieren, die die ursprüngliche Liste ändern. Stattdessen verwenden Sie die sorted()-Funktion, die aus den Elementen eines beliebigen iterierbaren Objekts, einschließlich Tupel, eine neue sortierte Liste zurückgibt. Anschließend können Sie diese sortierte Liste wieder in ein Tupel umwandeln.

Beginnen wir damit, ein einfaches Tupel zu erstellen:

my_tuple = (5, 2, 8, 1, 9)
print(my_tuple)

Jetzt sortieren wir dieses Tupel mit der sorted()-Funktion und wandeln das Ergebnis wieder in ein Tupel um:

  1. Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
  2. Erstellen Sie eine neue Datei mit dem Namen sort_tuple.py im Verzeichnis ~/project.
  3. Kopieren Sie den folgenden Code und fügen Sie ihn in sort_tuple.py ein:
my_tuple = (5, 2, 8, 1, 9)
sorted_list = sorted(my_tuple)
sorted_tuple = tuple(sorted_list)

print("Original tuple:", my_tuple)
print("Sorted tuple:", sorted_tuple)

Dieser Code definiert zunächst ein Tupel namens my_tuple. Dann verwendet er die sorted()-Funktion, um aus den Elementen von my_tuple eine sortierte Liste zu erstellen. Schließlich wandelt er die sortierte Liste wieder in ein Tupel namens sorted_tuple um.

Um das Skript auszuführen, öffnen Sie ein Terminal in VS Code (Sie finden es im unteren Bereich) und führen Sie den folgenden Befehl aus:

python sort_tuple.py

Sie sollten die folgende Ausgabe sehen:

Original tuple: (5, 2, 8, 1, 9)
Sorted tuple: (1, 2, 5, 8, 9)

Wie Sie sehen können, gibt die sorted()-Funktion ein neues Tupel zurück, bei dem die Elemente des ursprünglichen Tupels in aufsteigender Reihenfolge angeordnet sind.

Sie können das Tupel auch in absteigender Reihenfolge sortieren, indem Sie den reverse-Parameter der sorted()-Funktion verwenden:

my_tuple = (5, 2, 8, 1, 9)
sorted_list = sorted(my_tuple, reverse=True)
sorted_tuple = tuple(sorted_list)

print("Original tuple:", my_tuple)
print("Sorted tuple (descending):", sorted_tuple)

Speichern Sie die Änderungen an sort_tuple.py und führen Sie es erneut aus:

python sort_tuple.py

Die Ausgabe sollte jetzt wie folgt aussehen:

Original tuple: (5, 2, 8, 1, 9)
Sorted tuple (descending): (9, 8, 5, 2, 1)

Jetzt haben Sie ein sortiertes Tupel in absteigender Reihenfolge.

Vergleich mit sorted()

Im vorherigen Schritt haben Sie gelernt, wie Sie ein Tupel (Tuple) mit der sorted()-Funktion sortieren können. In diesem Schritt werden wir tiefer in die sorted()-Funktion eintauchen und ihr Verhalten mit anderen Methoden vergleichen, wobei wir ihre Vielseitigkeit und Anwendungsfälle hervorheben.

Die sorted()-Funktion ist eine eingebaute Python-Funktion, die verwendet werden kann, um jedes iterierbare Objekt zu sortieren, einschließlich Listen, Tupel, Strings und Dictionaries. Sie gibt eine neue sortierte Liste zurück, ohne das ursprüngliche iterierbare Objekt zu ändern. Dies ist besonders nützlich, wenn Sie die ursprüngliche Datenstruktur beibehalten möchten.

Lassen Sie uns einige Beispiele untersuchen, um die Stärke von sorted() zu veranschaulichen:

  1. Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
  2. Bearbeiten Sie die vorhandene Datei sort_tuple.py im Verzeichnis ~/project oder erstellen Sie sie, wenn sie noch nicht existiert.
  3. Kopieren Sie den folgenden Code und fügen Sie ihn in sort_tuple.py ein:
## Sorting a list of strings
string_list = ["banana", "apple", "orange"]
sorted_string_list = sorted(string_list)
print("Original list:", string_list)
print("Sorted list:", sorted_string_list)

## Sorting a string (characters)
my_string = "hello"
sorted_string = sorted(my_string)
print("Original string:", my_string)
print("Sorted string (as list):", sorted_string)

## Sorting a dictionary (keys)
my_dict = {"c": 3, "a": 1, "b": 2}
sorted_dict_keys = sorted(my_dict)
print("Original dictionary:", my_dict)
print("Sorted dictionary keys:", sorted_dict_keys)

Dieser Code zeigt, wie sorted() mit verschiedenen Datentypen verwendet werden kann. Er sortiert eine Liste von Strings alphabetisch, sortiert die Zeichen in einem String und sortiert die Schlüssel eines Dictionaries.

Um das Skript auszuführen, öffnen Sie ein Terminal in VS Code (Sie finden es im unteren Bereich) und führen Sie den folgenden Befehl aus:

python sort_tuple.py

Sie sollten die folgende Ausgabe sehen:

Original list: ['banana', 'apple', 'orange']
Sorted list: ['apple', 'banana', 'orange']
Original string: hello
Sorted string (as list): ['e', 'h', 'l', 'l', 'o']
Original dictionary: {'c': 3, 'a': 1, 'b': 2}
Sorted dictionary keys: ['a', 'b', 'c']

Beachten Sie, dass sorted() immer eine Liste zurückgibt, unabhängig vom Eingabetyp. Wenn Sie das Ergebnis in einem anderen Format benötigen, wie z. B. einem Tupel, können Sie es wie im vorherigen Schritt gelernt mit tuple() umwandeln.

Ein weiterer wichtiger Aspekt von sorted() ist der key-Parameter. Dieser Parameter ermöglicht es Ihnen, eine Funktion anzugeben, die verwendet wird, um einen Vergleichsschlüssel aus jedem Element des iterierbaren Objekts zu extrahieren. Dies ist nützlich, um komplexe Objekte basierend auf einem bestimmten Attribut zu sortieren.

Beispielsweise sortieren wir eine Liste von Tupeln basierend auf dem zweiten Element jedes Tupels:

## Sorting a list of tuples based on the second element
tuple_list = [(1, 'z'), (2, 'a'), (3, 'b')]
sorted_tuple_list = sorted(tuple_list, key=lambda x: x[1])
print("Original list of tuples:", tuple_list)
print("Sorted list of tuples (by second element):", sorted_tuple_list)

Fügen Sie diesen Code zu Ihrer sort_tuple.py-Datei hinzu und führen Sie sie erneut aus:

python sort_tuple.py

Die Ausgabe sollte jetzt Folgendes enthalten:

Original list of tuples: [(1, 'z'), (2, 'a'), (3, 'b')]
Sorted list of tuples (by second element): [(2, 'a'), (3, 'b'), (1, 'z')]

In diesem Beispiel extrahiert die Funktion lambda x: x[1] das zweite Element jedes Tupels, und sorted() verwendet diese Elemente, um die Reihenfolge der Tupel in der sortierten Liste zu bestimmen.

Prüfung mit all() und zip()

In diesem Schritt lernen Sie, wie Sie die Funktionen all() und zip() in Verbindung mit sortierten Tupeln (Tuples) verwenden können, um fortgeschrittene Prüfungen und Vergleiche durchzuführen.

Die all()-Funktion ist eine eingebaute Python-Funktion, die True zurückgibt, wenn alle Elemente eines iterierbaren Objekts wahr sind (oder wenn das iterierbare Objekt leer ist). Sie wird oft verwendet, um zu prüfen, ob eine Bedingung für alle Elemente einer Sequenz erfüllt ist.

Die zip()-Funktion ist eine weitere eingebaute Python-Funktion, die mehrere iterierbare Objekte als Argumente nimmt und einen Iterator von Tupeln zurückgibt. Jedes Tupel enthält die entsprechenden Elemente aus den Eingabe-iterierbaren Objekten. Sie ist nützlich, um Elemente aus verschiedenen Sequenzen für Vergleiche oder andere Operationen zu paarweise zu verknüpfen.

Schauen wir uns an, wie diese Funktionen mit sortierten Tupeln verwendet werden können:

  1. Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
  2. Bearbeiten Sie die vorhandene Datei sort_tuple.py im Verzeichnis ~/project oder erstellen Sie sie, wenn sie noch nicht existiert.
  3. Kopieren Sie den folgenden Code und fügen Sie ihn in sort_tuple.py ein:
## Checking if a tuple is sorted using all() and zip()
def is_sorted(data):
    ## zip(data, data[1:]) pairs consecutive elements
    ## all(x <= y for x, y in ...) checks if each pair is in ascending order
    return all(x <= y for x, y in zip(data, data[1:]))

my_tuple1 = (1, 2, 3, 4, 5)
my_tuple2 = (5, 2, 8, 1, 9)

print("Tuple 1:", my_tuple1, "is sorted:", is_sorted(my_tuple1))
print("Tuple 2:", my_tuple2, "is sorted:", is_sorted(my_tuple2))

Dieser Code definiert eine Funktion is_sorted(), die prüft, ob ein gegebenes Tupel in aufsteigender Reihenfolge sortiert ist. Sie verwendet zip(), um aufeinanderfolgende Elemente des Tupels zu paarweise zu verknüpfen, und all(), um zu prüfen, ob jedes Paar in aufsteigender Reihenfolge ist.

Um das Skript auszuführen, öffnen Sie ein Terminal in VS Code (Sie finden es im unteren Bereich) und führen Sie den folgenden Befehl aus:

python sort_tuple.py

Sie sollten die folgende Ausgabe sehen:

Tuple 1: (1, 2, 3, 4, 5) is sorted: True
Tuple 2: (5, 2, 8, 1, 9) is sorted: False

Wie Sie sehen können, erkennt die is_sorted()-Funktion korrekt, ob die Tupel sortiert sind oder nicht.

Lassen Sie uns dieses Beispiel erweitern, um zu prüfen, ob zwei Tupel nach dem Sortieren identisch sind:

## Checking if two tuples are identical after sorting
def are_identical_after_sorting(tuple1, tuple2):
    return sorted(tuple1) == sorted(tuple2)

tuple_a = (3, 1, 4, 1, 5)
tuple_b = (1, 5, 1, 4, 3)
tuple_c = (1, 2, 3, 4, 5)

print("Tuple A:", tuple_a, "and Tuple B:", tuple_b, "are identical after sorting:", are_identical_after_sorting(tuple_a, tuple_b))
print("Tuple A:", tuple_a, "and Tuple C:", tuple_c, "are identical after sorting:", are_identical_after_sorting(tuple_a, tuple_c))

Fügen Sie diesen Code zu Ihrer sort_tuple.py-Datei hinzu und führen Sie sie erneut aus:

python sort_tuple.py

Die Ausgabe sollte jetzt Folgendes enthalten:

Tuple A: (3, 1, 4, 1, 5) and Tuple B: (1, 5, 1, 4, 3) are identical after sorting: True
Tuple A: (3, 1, 4, 1, 5) and Tuple C: (1, 2, 3, 4, 5) are identical after sorting: False

In diesem Beispiel prüft die are_identical_after_sorting()-Funktion, ob zwei Tupel die gleichen Elemente enthalten, unabhängig von ihrer ursprünglichen Reihenfolge. Sie sortiert beide Tupel und vergleicht dann die sortierten Listen.

Zusammenfassung

In diesem Lab haben Sie gelernt, was sortierte Tupel (Tuples) in Python sind und wie Sie sie erstellen können. Da Tupel unveränderlich (immutable) sind, können Sie sie nicht direkt sortieren. Stattdessen wird die sorted()-Funktion verwendet, um aus den Elementen des Tupels eine neue sortierte Liste zu erstellen, die dann wieder in ein Tupel umgewandelt wird.

Das Lab hat gezeigt, wie Sie ein Tupel in aufsteigender Reihenfolge mit sorted() sortieren können und wie Sie das ursprüngliche und das sortierte Tupel mit Print-Anweisungen anzeigen können. Das Lab hat auch die Möglichkeit erwähnt, in absteigender Reihenfolge zu sortieren, indem Sie den reverse-Parameter verwenden, obwohl der vollständige Code dafür gekürzt wurde.