Numerisches Sortieren einer Liste von String-Zahlen
Trotz ihrer Einfachheit kann die Python-Funktion sort() beim Umgang mit Strings, die Zahlen darstellen, irreführend sein . Wie im Codeausschnitt unten gezeigt, führt der Versuch, diese Zeichenfolgen in Ganzzahlen umzuwandeln und sie dann zu sortieren, zu falschen Ergebnissen:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] for item in list1: item = int(item) list1.sort() print(list1)
Ausgabe:
['1', '10', '2', '200', '22', '23', '3', '4']
Um dieses Problem zu beheben, müssen Sie Konvertieren Sie Ihre Zeichenfolgen tatsächlich in Ganzzahlen. Hier ist der korrigierte Code:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1 = [int(x) for x in list1] list1.sort()
Dies gibt die richtige numerische Reihenfolge aus:
['1', '2', '3', '4', '10', '22', '23', '200']
Wenn Sie die Elemente alternativ als Zeichenfolgen behalten müssen, können Sie den Schlüsselparameter in sort verwenden (). Dieser Parameter akzeptiert eine Funktion, die für jedes Element aufgerufen wird, bevor es verglichen wird. Zum Vergleich wird der Rückgabewert der Schlüsselfunktion anstelle des Elements selbst verwendet.
Zum Beispiel:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1.sort(key=int)
oder
list1 = sorted([int(x) for x in list1])
Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Liste von String-Nummern numerisch in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!