Unterschied zwischen sort() und sorted() in Python

Vaibhav Vaibhav 4 Dezember 2021
  1. Die Funktion sort() in Python
  2. Die Funktion sorted() in Python
Unterschied zwischen sort() und sorted() in Python

Sortieren ist ein Thema, das in der Welt der Informatik sehr wichtig ist. Es stehen viele Algorithmen zum Sortieren von Datenarrays zur Verfügung, z. B. Merge-Sort, Quick-Sort, Bubble-Sort, Selection-Sort, Insert-Sort usw. Alle diese Algorithmen haben unterschiedliche zeitliche und räumliche Komplexität, aber Merge und Quick werden im Allgemeinen als die besten angesehen. Da das Sortieren ein sehr verbreiteter Vorgang ist, enthalten Programmiersprachen eingebaute Funktionen zum Sortieren von Daten. Und Python ist einer von ihnen.

Aber es gibt zwei Funktionen zum Sortieren in Python, nämlich sortieren und sortiert. In diesem Artikel lernen wir den Unterschied zwischen diesen beiden Sortierfunktionen kennen.

Die Funktion sort() in Python

Die Funktion sortieren in Python sortiert die Liste an Ort und Stelle, indem sie die Werte an ihren Indizes vertauscht. Wenn wir die Funktion sortieren über eine Liste aufrufen, wird keine neue Liste zurückgegeben; stattdessen wird dieselbe Liste sortiert. Mit der Funktion sort() können Listen sortiert werden.

Ein Beispiel finden Sie im folgenden Code.

myList = [1, 5, 2, 10, 33, 3, 9]
print(myList)
myList.sort()
print(myList)

Ausgabe:

[1, 5, 2, 10, 33, 3, 9]
[1, 2, 3, 5, 9, 10, 33]

Wie wir sehen, wurde dieselbe Liste sortiert, als wir die Funktion sort darüber aufgerufen haben.

Wenn wir die Liste in umgekehrter Reihenfolge sortieren möchten, können wir dies auch tun, indem wir das Argument reverse auf True setzen.

Siehe den folgenden Code für dasselbe.

myList = [1, 5, 2, 10, 33, 3, 9]
print(myList)
myList.sort(reverse=True)
print(myList)

Ausgabe:

[1, 5, 2, 10, 33, 3, 9]
[33, 10, 9, 5, 3, 2, 1]

Die Funktion sort hat noch einen weiteren Parameter, nämlich key, mit dem festgelegt werden kann, welcher Wert für die Sortierung berücksichtigt werden soll. Wenn wir zum Beispiel eine Liste von Paaren haben und die Paare nach dem zweiten Wert sortieren möchten, können wir dies mit dem Parameter key tun.

Ein Beispiel finden Sie im folgenden Code.

def secondElement(element):
    return element[1]


data = [(1, 2), (3, 4), (5, 3), (6, 6), (3, 0), (10, 1)]
print("Before sorting:", data)
data.sort(key=secondElement)
print("After sorting:", data)

Ausgabe:

Before sorting: [(1, 2), (3, 4), (5, 3), (6, 6), (3, 0), (10, 1)]
After sorting: [(3, 0), (10, 1), (1, 2), (5, 3), (3, 4), (6, 6)]

Wie wir sehen können, ist die Liste nach der zweiten Zahl innerhalb der Paare sortiert.

Wir können auch eine Liste von Wörterbüchern mit dem gleichen Ansatz sortieren. Siehe den folgenden Code für dasselbe.

def byName(entry):
    return entry["name"]


def byAge(entry):
    return entry["age"]


def byRank(entry):
    return entry["rank"]


data = [
    {
        "name": "Vaibhav",
        "age": 18,
        "rank": 1,
    },
    {
        "name": "Steve",
        "age": 24,
        "rank": 5,
    },
    {
        "name": "Olive",
        "age": 12,
        "rank": 2,
    },
    {
        "name": "Allison",
        "age": 17,
        "rank": 4,
    },
]

print("Original Data")
print(data)
print("Sorted by Name")
data.sort(key=byName)
print(data)
print("Sorted by Age")
data.sort(key=byAge)
print(data)
print("Sorted by Rank")
data.sort(key=byRank)
print(data)

Ausgabe:

Original Data
[{'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Steve', 'age': 24, 'rank': 5}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}]
Sorted by Name
[{'name': 'Allison', 'age': 17, 'rank': 4}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Steve', 'age': 24, 'rank': 5}, {'name': 'Vaibhav', 'age': 18, 'rank': 1}]
Sorted by Age
[{'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}, {'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Steve', 'age': 24, 'rank': 5}]
Sorted by Rank
[{'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}, {'name': 'Steve', 'age': 24, 'rank': 5}]

Wie wir sehen, sind die Einträge in der Liste der Wörterbücher nach dem von uns definierten Schlüssel sortiert.

Die Funktion sorted() in Python

Wie die Funktion sort wird auch sorted zum Sortieren von Listen verwendet. Die Funktion sorted gibt jedoch eine neue Liste zurück, anstatt dieselbe Liste an Ort und Stelle zu sortieren. Dies ist der Hauptunterschied zwischen den beiden Funktionen. Lassen Sie uns dies an einem Beispiel verstehen.

myList = [1, 5, 2, 10, 33, 3, 9]
print("Before called sorted():", myList)
newList = sorted(myList)
print("After called sorted():", myList)
print("New list:", newList)

Ausgabe:

Before called sorted(): [1, 5, 2, 10, 33, 3, 9]
After called sorted(): [1, 5, 2, 10, 33, 3, 9]
New list: [1, 2, 3, 5, 9, 10, 33]

Wie wir sehen, bleibt die Liste, die wir an die Funktion sorted übergeben haben, gleich, und es wurde eine neue Liste zurückgegeben, die in der Variablen newList gespeichert wird. Auch in dieser Funktion stehen die beiden Parameter reverse und key zur Verfügung. Mit den beiden können wir eine sortierte Liste in umgekehrter Reihenfolge erhalten und die Liste basierend auf einem benutzerdefinierten Schlüssel sortieren. Die folgenden Beispiele zeigen dasselbe.

Beispiel für den Parameter reverse.

myList = [1, 5, 2, 10, 33, 3, 9]
print("Before called sorted():", myList)
newList = sorted(myList, reverse=True)
print("After called sorted():", myList)
print("New list:", newList)

Ausgabe:

Before called sorted(): [1, 5, 2, 10, 33, 3, 9]
After called sorted(): [1, 5, 2, 10, 33, 3, 9]
New list: [33, 10, 9, 5, 3, 2, 1]

Und ein Beispiel für den Parameter key.

def byName(entry):
    return entry["name"]


def byAge(entry):
    return entry["age"]


def byRank(entry):
    return entry["rank"]


data = [
    {
        "name": "Vaibhav",
        "age": 18,
        "rank": 1,
    },
    {
        "name": "Steve",
        "age": 24,
        "rank": 5,
    },
    {
        "name": "Olive",
        "age": 12,
        "rank": 2,
    },
    {
        "name": "Allison",
        "age": 17,
        "rank": 4,
    },
]

print("Original Data")
print(data)
print("Sorted by Name")
nameSorted = sorted(data, key=byName)
print(nameSorted)
print("Sorted by Age")
ageSorted = sorted(data, key=byAge)
print(ageSorted)
print("Sorted by Rank")
rankSorted = sorted(data, key=byRank)
print(rankSorted)
print("Data after all operations")
print(data)

Ausgabe:

Original Data
[{'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Steve', 'age': 24, 'rank': 5}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}]
Sorted by Name
[{'name': 'Allison', 'age': 17, 'rank': 4}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Steve', 'age': 24, 'rank': 5}, {'name': 'Vaibhav', 'age': 18, 'rank': 1}]
Sorted by Age
[{'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}, {'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Steve', 'age': 24, 'rank': 5}]
Sorted by Rank
[{'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}, {'name': 'Steve', 'age': 24, 'rank': 5}]
Data after all operations
[{'name': 'Vaibhav', 'age': 18, 'rank': 1}, {'name': 'Steve', 'age': 24, 'rank': 5}, {'name': 'Olive', 'age': 12, 'rank': 2}, {'name': 'Allison', 'age': 17, 'rank': 4}]
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Python Sorting