Die integrierte sort()-Methode von Python wird zum Sortieren verwendet. Sie können auch die integrierte globale sorted()-Methode von Python verwenden, um iterierbare Sequenzen zu sortieren und neue Sequenzen zu generieren.
1) Sortiergrundlagen
Einfache aufsteigende Sortierung ist sehr einfach. Rufen Sie einfach die Methode sorted() auf. Es wird eine neue Liste zurückgegeben, deren Elemente basierend auf dem Kleiner-als-Operator (__lt__) sortiert werden.
Der Code lautet wie folgt:
>>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5]
Sie können zum Sortieren auch die Methode list.sort() verwenden. In diesem Fall wird die Liste selbst geändert. Diese Methode ist im Allgemeinen weniger praktisch als sorted(), aber wenn Sie die ursprüngliche Liste nicht beibehalten müssen, ist diese Methode effizienter.
Der Code lautet wie folgt:
>>> a = [5, 2, 3, 1, 4] >>> a.sort() >>> a [1, 2, 3, 4, 5]
Ein weiterer Unterschied besteht darin, dass die Methode list.sort() nur in Listen definiert ist, im Gegensatz dazu ist die Methode sorted() für alle Iterierbaren gültig Sequenzen.
Der Code lautet wie folgt:
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) [1, 2, 3, 4, 5]
2) Schlüsselparameter/-funktionen
Ab Python2.4, list.sort() und sortiert () Funktionen Der Schlüsselparameter wird hinzugefügt, um eine Funktion anzugeben, die aufgerufen wird, bevor jedes Element verglichen wird. Um beispielsweise die Groß-/Kleinschreibung einer Zeichenfolge durch die durch den Schlüssel angegebene Funktion zu ignorieren:
Der Code lautet wie folgt:
>>> sorted("This is a test string from Andrew".split(), key=str.lower) ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
Der Wert des Schlüsselparameters ist eine Funktion einen Parameter und gibt einen Wert für die Verarbeitung von Compare zurück. Diese Technik ist schnell, da die durch den Schlüssel angegebene Funktion für jedes Element genau aufgerufen wird.
Ein weiter verbreiteter Anwendungsfall besteht darin, bestimmte Werte komplexer Objekte zu verwenden, um Sequenzen komplexer Objekte zu sortieren, zum Beispiel:
Der Code lautet wie folgt:
>>> student_tuples = [ ('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10), ] >>> sorted(student_tuples, key=lambda student: student[2]) # sort by age [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Die gleiche Technologie ist auch auf komplexe Objekte mit benannten Attributen anwendbar, zum Beispiel:
Der Code lautet wie folgt:
>>> class Student: def __init__(self, name, grade, age): self.name = name self.grade = grade self.age = age def __repr__(self): return repr((self.name, self.grade, self.age)) >>> student_objects = [ Student('john', 'A', 15), Student('jane', 'B', 12), Student('dave', 'B', 10), ] >>> sorted(student_objects, key=lambda student: student.age) # sort by age [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
3) Operatormodulfunktion
Der obige Schlüsselparameter ist sehr nützlich. Daher bietet Python einige praktische Funktionen, um den Zugriff auf Methoden einfacher und schneller zu machen. Das Operatormodul verfügt seit 2.6 über die Methoden itemgetter, attrgetter und methodcaller. Mit diesen Methoden wird der obige Vorgang übersichtlicher und schneller:
Kopieren Sie den Code wie folgt:
>>> from operator import itemgetter, attrgetter >>> sorted(student_tuples, key=itemgetter(2)) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] >>> sorted(student_objects, key=attrgetter('age')) [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Das Operatormodul ermöglicht auch eine mehrstufige Sortierung, zum Beispiel zuerst nach Klasse, dann nach Alter sortieren:
Kopieren Sie den Code wie folgt:
>>> sorted(student_tuples, key=itemgetter(1,2)) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] >>> sorted(student_objects, key=attrgetter('grade', 'age')) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
4) Auf- und absteigende Reihenfolge
Sowohl list.sort() als auch sorted() Akzeptiert einen Parameter reverse (True oder False), um eine aufsteigende oder absteigende Sortierung anzugeben. Sortieren Sie die Schüler oben beispielsweise in absteigender Reihenfolge wie folgt:
Kopieren Sie den Code. Der Code lautet wie folgt:
>>> sorted(student_tuples, key=itemgetter(2), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] >>> sorted(student_objects, key=attrgetter('age'), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
Das obige ist der detaillierte Inhalt vonWelches Wort wird in Python für die absteigende Reihenfolge verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!