Heim >Backend-Entwicklung >Python-Tutorial >Wie sortiere ich String-Nummern numerisch in Python?

Wie sortiere ich String-Nummern numerisch in Python?

Susan Sarandon
Susan SarandonOriginal
2024-12-08 00:07:11157Durchsuche

How to Sort String Numbers Numerically in Python?

String-Nummern numerisch sortieren

Wenn es sich um eine Liste von Strings handelt, die numerische Werte darstellen, kann es auf den ersten Blick so erscheinen, sie nach ihrem tatsächlichen Wert zu sortieren eine unkomplizierte Aufgabe. Allerdings kann die Standardfunktion sort() in Python unerwartete Ergebnisse liefern.

Das Problem entsteht, weil die Funktion sort() die Zeichenfolgen lexikografisch vergleicht, d. h. sie alphabetisch statt numerisch sortiert. Um dieses Problem zu lösen, ist es wichtig, die Zeichenfolgen vor der Sortierung in tatsächliche Ganzzahlen umzuwandeln.

Betrachten Sie den folgenden Python-Code:

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
for item in list1:
    item = int(item)

list1.sort()

In diesem Code konvertieren wir zunächst jede Zeichenfolge in list mit der Funktion int() in eine Ganzzahl um. Allerdings vernachlässigen wir dann die Verwendung der konvertierten Ganzzahlwerte bei der Sortierung. Als Ergebnis vergleicht die Funktion die Originalzeichenfolgen und erzeugt die folgende Ausgabe:

['1', '10', '2', '200', '22', '23', '3', '4']

Um die Liste numerisch zu sortieren, müssen wir die konvertierten Ganzzahlen in die Sortierung einbeziehen, wie unten gezeigt:

list1 = [int(x) for x in list1]
list1.sort()

Dieses Mal vergleicht die Funktion die ganzzahligen Werte korrekt und erzeugt die gewünschte Ausgabe:

['1', '2', '3', '4', '10', '22', '23', '200']

Alternativ, wenn Sie die Werte beibehalten müssen Anstatt Zeichenfolgen in Ganzzahlen umzuwandeln, können Sie beim Sortieren eine Tastenfunktion verwenden. Mit der Funktion sort() können Sie eine Schlüsselfunktion angeben, die auf jedes Element angewendet wird, bevor es verglichen wird. Dadurch können Sie die Vergleichskriterien anpassen.

Um beispielsweise die Liste der Zeichenfolgen mithilfe einer Tastenfunktion numerisch zu sortieren, können Sie den folgenden Code verwenden:

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
list1.sort(key=int)

In diesem Fall Die Schlüsselfunktion int() wird vor dem Vergleich auf jede Zeichenfolge angewendet. Die Funktion wandelt die Zeichenfolgen in Ganzzahlen um, und die Funktion sort() vergleicht die resultierenden Ganzzahlwerte und erzeugt dieselbe gewünschte Ausgabe:

['1', '2', '3', '4', '10', '22', '23', '200']

Durch das Verständnis der Funktionsweise der Funktion sort() in Python und die Verwendung von Schlüsselfunktionen Bei Bedarf können Sie Listen mit Zeichenfolgennummern effektiv numerisch sortieren, unabhängig von ihrem ursprünglichen Format.

Das obige ist der detaillierte Inhalt vonWie sortiere ich String-Nummern numerisch in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn