Sortieren einer Liste numerischer Zeichenfolgen
Pythons sort()-Funktion kann verwirrend sein, wenn es um Zeichenfolgen geht, die Zahlen darstellen. Dieser Artikel erklärt, warum und stellt Lösungen vor, um solche Listen numerisch zu sortieren.
Das Problem:
Bedenken Sie den folgenden Codeausschnitt:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] for item in list1: item = int(item) list1.sort() print(list1)
Dies Der Code versucht, jede Zeichenfolge in der Liste in eine Ganzzahl umzuwandeln und die Liste dann zu sortieren. Die Ausgabe ist jedoch falsch:
['1', '10', '2', '200', '22', '23', '3', '4']
Die Lösung:
Das Problem im angegebenen Code besteht darin, dass jede Zeichenfolge innerhalb der Schleife in eine Ganzzahl konvertiert wird , aktualisiert die Schleife die ursprüngliche Liste nicht. Um dies zu beheben, konvertieren Sie die Zeichenfolgen in Ganzzahlen und erstellen Sie eine neue Liste:
list1 = [int(x) for x in list1] list1.sort()
Verwenden einer Tastenfunktion:
Wenn Sie die Zeichenfolgen stattdessen beibehalten müssen Um sie in Ganzzahlen umzuwandeln, können Sie den Schlüsselparameter in der Funktion sort() verwenden:
list1 = ["1", "10", "3", "22", "23", "4", "2", "200"] list1.sort(key=int)
oder in einer einzelnen Zeile:
list1 = sorted([int(x) for x in list1])
In beiden Fällen wird die Funktion int() vor dem Vergleich als Schlüssel für jede Zeichenfolge aufgerufen, sodass die Liste numerisch sortiert werden kann.
Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Liste numerischer Zeichenfolgen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!