Python-Einführung in die list.sort-Methode und die integrierte Sortierfunktion

coldplay.xixi
Freigeben: 2021-01-18 17:11:34
nach vorne
3548 Leute haben es durchsucht

Python-Einführung in die list.sort-Methode und die integrierte Sortierfunktion

Verwandte kostenlose Lernempfehlungen: Python-Video-Tutorial

Python-Listensortierung list.sort-Methode und integrierte Funktion sortiert

Viele Male, nachdem wir eine Liste erhalten haben, ist die Liste Um unseren Anforderungen gerecht zu werden, benötigen wir eine Liste in einer speziellen Reihenfolge.

Zu diesem Zeitpunkt können Sie die Methode list.sort und die integrierte Funktion sorted verwenden. Dieser Artikel stellt die Verwendung und den Unterschied zwischen der Liste vor. sort-Methode und die eingebaute Funktion „sortiert“. Aus diesem Grund ist der Rückgabewert dieser Methode None, was Sie daran erinnert, dass diese Methode keine neue Liste erstellt.

None zurückzugeben ist in diesem Fall eigentlich eine Konvention in Python: Wenn eine Funktion oder Methode das vorhandene Objekt ändert, sollte sie None zurückgeben, damit der Aufrufer weiß, dass sich die übergebenen Parameter geändert haben und keine neuen Objekte erstellt werden. Werfen wir einen Blick auf den Code:

# coding=utf-8
list_a = [1, 2, 8, 3, 7, 9, 5, 7]
# sort()方法没有返回值
list_b = list_a.sort()
print("list_a: ", list_a)
print('list_b: ', list_b)
Nach dem Login kopieren

Laufergebnisse:

list_a:  [1, 2, 3, 5, 7, 7, 8, 9]
list_b:  None
Nach dem Login kopieren

Die Rückgabe von None zur Angabe direkter Änderungen hat einen Nachteil dieser Konvention, d. h. der Aufrufer kann sie nicht verketten. Im Gegensatz dazu können Methoden, die ein neues Objekt zurückgeben, verkettet werden, um eine kohärente Schnittstelle zu bilden.

2. Integrierte Funktion „Sorted“

Im Gegensatz zu list.sort erstellt die integrierte Funktion „sorted“ eine neue Liste als Rückgabewert.

Diese Methode kann jede Form von iterierbaren Objekten als Parameter akzeptieren, sogar unveränderliche Sequenzen oder Generatoren, und unabhängig davon, welche Parameter sorted akzeptiert, wird sie schließlich eine Liste zurückgeben. Codebeispiel:

list_c = [1, 2, 8, 3, 7, 9, 5, 7]
# sorted内置函数会返回一个排序后的新列表
list_d = sorted(list_c)
print("list_c: ", list_c)
print('list_d: ', list_d)
Nach dem Login kopieren

Laufendes Ergebnis:

list_c:  [1, 2, 8, 3, 7, 9, 5, 7]
list_d:  [1, 2, 3, 5, 7, 7, 8, 9]
Nach dem Login kopieren

Sie können sehen, dass bei Verwendung der integrierten Funktion sorted eine neue Liste zurückgegeben wird, während die ursprüngliche Liste unverändert bleibt.

Dies hat zwei Vorteile:

1 Wenn wir sowohl die Originalliste als auch die sortierte Liste verwenden müssen oder wenn wir ein nicht in der Liste enthaltenes Objekt in eine Liste sortieren möchten, kann dies mit „sorted“ erledigt werden

2 Es gibt einen Rückgabewert, wir können Kettenaufrufe durchführen

# 可以对非列表的可迭代对象排序生成列表
str_e = 'python'
list_e = sorted(str_e)
print(list_e)

# 链式调用
str_f = '-'.join(sorted(str_e)).upper().split('-')
print(str_f)
Nach dem Login kopieren

Das Operationsergebnis:

['h', 'n', 'o', 'p', 't', 'y']
['H', 'N', 'O', 'P', 'T', 'Y']
Nach dem Login kopieren

3. Schlüsselwortparameter key und reverse

Ob es sich um die list.sort-Methode oder die sortierte Funktion handelt, es stehen zwei Ausgewählte zur Verfügung Schlüsselwortparameter:

key:

empfängt eine Funktion mit nur einem Parameter. Diese Funktion wird für jedes Element in der Sequenz verwendet und das Ergebnis ist der Vergleichsschlüssel, auf den sich der Sortieralgorithmus stützt.

Wenn Sie beispielsweise einige Zeichenfolgen sortieren, können Sie key=str.lower verwenden, um eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung zu implementieren, oder key=len, um nach der Zeichenfolgenlänge zu sortieren. Der Standardwert des Schlüssels ist die Identitätsfunktion, was bedeutet, dass der eigene Wert des Elements standardmäßig zum Sortieren verwendet wird.

reverse:

Wenn auf True gesetzt, werden die Elemente in der sortierten Reihenfolge in absteigender Reihenfolge ausgegeben (d. h. der Maximalwert wird als Minimalwert sortiert). Der Standardwert von reverse ist False.

phone = ('HUAWEI', 'OPPO', 'MI', 'MEIZU', 'VIVO')
# 按长度进行排序
phone_list = sorted(phone, key=len)
print(phone_list)

phone_list_re = sorted(phone, key=len, reverse=True)
print(phone_list_re)
Nach dem Login kopieren

Laufendes Ergebnis:

['MI', 'OPPO', 'VIVO', 'MEIZU', 'HUAWEI']
['HUAWEI', 'MEIZU', 'OPPO', 'VIVO', 'MI']
Nach dem Login kopieren
Im obigen Code erstellt die erste Sortierung eine neue Zeichenfolgenliste, sortiert nach Länge. Die zweite Sortierung besteht darin, die Sortierung nach Länge von aufsteigender auf absteigender Reihenfolge zu ändern.

Wenn Sie vorsichtig sind, sollten Sie feststellen, dass das zweite Ergebnis keine vollständige Umkehrung des ersten sortierten Ergebnisses ist.

Die Längen von OPPO und VIVO betragen beide 4. Nach reverse=True sind ihre relativen Positionen dieselben wie bei der ersten Sortierung. Was ist der Grund dafür? Die Sortieralgorithmen hinter

sorted und list.sort sind beide Timsort, ein adaptiver Algorithmus, der abwechselnd Einfügungssortierung und Zusammenführungssortierung

basierend auf den Ordnungsmerkmalen der Originaldaten verwendet, um die beste Effizienz zu erzielen.

Pythons Sortieralgorithmus Timsort ist stabil (wissen Sie das einfach), was bedeutet, dass selbst wenn die beiden Elemente in der Größe nicht vergleichbar sind, ihre relativen Positionen im Ergebnis jeder Sortierung festgelegt sind.

Da der verwendete Sortieralgorithmus stabil ist, das heißt, wenn die Längen gleich sind, ändern sich die relativen Positionen von OPPO und VIVO nicht.


Jetzt beherrschen Sie die Verwendung der list.sort()-Methode und der integrierten Sortierfunktion~

Zugehörige kostenlose Lernempfehlungen:

Python-Tutorial
(Video)

Das obige ist der detaillierte Inhalt vonPython-Einführung in die list.sort-Methode und die integrierte Sortierfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage