Python3 sorted()-Funktion
Python3 integrierte Funktionen
Beschreibung
sorted()Die Funktion führt Sortiervorgänge an allen iterierbaren Objekten durch.
Unterschied zwischen sort und sorted:
sort ist eine Methode, die auf Listen angewendet wird, während sorted Sortiervorgänge an allen iterierbaren Objekten durchführen kann.
Die sort-Methode für Listen arbeitet mit einer vorhandenen Liste, während die eingebaute Funktion sorted eine neue Liste zurückgibt, statt die ursprüngliche zu bearbeiten.
Syntax
Syntax von sorted:
sorted(iterable, key=None, reverse=False)
Parameter description:
- iterable -- iterierbares Objekt.
- key -- wird hauptsächlich zum Vergleichen von Elementen verwendet, hat nur einen Parameter. Der Parameter der jeweiligen Funktion wird aus dem iterierbaren Objekt entnommen und gibt ein Element im iterierbaren Objekt an, das zum Sortieren verwendet werden soll.
- reverse -- Sortierregel, reverse = True für absteigende Reihenfolge, reverse = False für aufsteigende Reihenfolge (Standard).
Rückgabewert
Gibt eine neu sortierte Liste zurück.
Beispiel
Das folgende Beispiel zeigt die einfachste Verwendung von sorted:
[1, 2, 3, 4, 5] # Standard ist aufsteigende Reihenfolge
Sie können auch die Methode list.sort() einer Liste verwenden. Diese Methode ändert die ursprüngliche Liste (gibt None zurück). Normalerweise ist diese Methode weniger praktisch als sorted() - wenn Sie die ursprüngliche Liste nicht benötigen, ist list.sort() etwas effizienter.
>>> a.sortieren()
>>> a
[1,2,3,4,5]
Ein weiterer Unterschied ist, dass die Methode list.sort() nur für Listen definiert ist, während die Funktion sorted() jedes iterierbare Objekt akzeptieren kann.
[1, 2, 3, 4, 5]
Verwenden Sie key, um in umgekehrter Reihenfolge zu sortieren
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
>>>
Um in umgekehrter Reihenfolge zu sortieren, können Sie auch den dritten Parameter reverse=True übergeben:
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]
Das folgende ist ein komplexeres Beispiel, bei dem die Medaillentabelle sortiert wird. Die Daten enthalten Gold-, Silber- und Bronzedaten für 15 Länder, wobei\nals Trennzeichen verwendet wird:
Beispiel
stodata = s.split('\n',-1)
# Verwende sorted
para = {}
for line in range(len(stodata)):
# Jede Datenzeile
data = stodata[line].split(' ')
print(data)
# Datenstruktur zusammensetzen para={'China': [], 'Russia': []}
para[data[0]] = [int('-' + i) for i in data[1:]]
# Sortierung starten (x
new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
print()
c=[]
for i in new_para:
c.append((i[0]))
for j in range(15):
print(f"{(j+1):2d} {c[j]}")
Das Ausgabeergebnis ist:
['德国', '10', '11', '16'] ['意大利', '10', '10', '20'] ['荷兰', '10', '12', '14'] ['法国', '10', '12', '11'] ['英国', '22', '21', '22'] ['中国', '38', '32', '18'] ['日本', '27', '14', '17'] ['美国', '39', '41', '33'] ['俄罗斯奥委会', '20', '28', '23'] ['澳大利亚', '17', '7', '22'] ['匈牙利', '6', '7', '7'] ['加拿大', '7', '6', '11'] ['古巴', '7', '3', '5'] ['巴西', '7', '6', '8'] ['新西兰', '7', '6', '7'] 1 美国 2 中国 3 日本 4 英国 5 俄罗斯奥委会 6 澳大利亚 7 荷兰 8 法国 9 德国 10 意大利 11 加拿大 12 巴西 13 新西兰 14 古巴 15 匈牙利Andere Erweiterungen