Python3 sorted()-Funktion

Python3 内置函数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:

>>> sorted([5, 2, 3, 1, 4])
[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=[5,2,3,1,4]
>>> 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.

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]

Verwenden Sie key, um in umgekehrter Reihenfolge zu sortieren

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> 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:

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> 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

s = "Deutschland 10 11 16\nItalien 10 10 20\nNiederlande 10 12 14\nFrankreich 10 12 11\nVereinigtes Königreich 22 21 22\nChina 38 32 18\nJapan 27 14 17\nUSA 39 41 33\nRussisches Olympisches Komitee 20 28 23\nAustralien 17 7 22\nUngarn 6 7 7\nKanada 7 6 11\nKuba 7 3 5\nBrasilien 7 6 8\nNeuseeland 7 6 7"
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  匈牙利

Python3 内置函数Python3 integrierte Funktionen

Andere Erweiterungen