Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erklärung zur Verwendung von sort() in Python

Ausführliche Erklärung zur Verwendung von sort() in Python

高洛峰
高洛峰Original
2017-05-25 11:14:313379Durchsuche

1. Grundform

sorted(iterable[, cmp[, key[, reverse]]])
iterable.sort(cmp[, key[, reverse]])


Parametererklärung:
(1) iterable gibt selbstverständlich die zu sortierende Liste oder iterable an; > (2) cmp ist eine Funktion, die die Funktion für den Vergleich beim Sortieren angibt, z. B.:
Students ist eine Liste von Klassenobjekten, die Sie definieren können Wenn Sie beispielsweise die Funktion „sortiert“ zum Vergleich verwenden, möchten Sie die Sortierung durch den Vergleich des dritten Datenelements durchführen. Der Code kann wie folgt geschrieben werden:

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda student : student[2])

(3) Schlüssel ist eine Funktion, die angibt, welches Element der zu sortierenden Elemente verwendet wird. Die Funktion wird anhand des obigen Beispiels erläutert. Der Code lautet wie folgt:

sorted(students, key=lambda student : student[2])

Die Funktion des Lambda Die durch den Schlüssel angegebene Funktion besteht darin, das dritte Feld des Elements student (dh: student[2]) zu entfernen. Wenn also sortiert wird, wird das dritte Feld aller Elemente von Students zum Sortieren verwendet.

2. Allgemeine Verwendung:
1. In-Place-Sortierung 1) Die Liste verfügt über eine eigene Sortiermethode, die die Liste in-Place sortiert. Da es sich um eine In-Place-Sortierung handelt, können Tupel diese Methode offensichtlich nicht verwenden, da Tupel nicht geändert werden können.

x = [4, 6, 2, 1, 7, 9]
x.sort()
print x # [1, 2, 4, 6, 7, 9]


2. Kopiersortierung1)[:] Sharding-Methode

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

Hinweis: y = x [ :] Kopieren Sie alle Elemente der Liste x durch den Sharding-Vorgang nach y. Wenn Sie x einfach y zuweisen: y = x, y und x verweisen immer noch auf dieselbe Liste und es werden keine neuen Kopien generiert.
2) sortierte Methode
sorted gibt eine geordnete Kopie zurück, und der Typ ist immer eine Liste, wie folgt:

x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9] 
print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']


3. Erweiterte Verwendung
1. Benutzerdefinierte cmp-Vergleichsfunktion

def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0
nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]


2. Benutzerdefinierte Taste und Umkehrung1.Umkehrung zur Implementierung der absteigenden Sortierung, erforderlich Stellt einen booleschen Wert bereit, der Standardwert ist False (aufsteigende Reihenfolge).
2.key muss eine Funktion bereitstellen, die bei Verwendung vom Sortierprozess aufgerufen wird:

alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = lambda x:(int(x[2]), int(x[1])), reverse = False)
-------------------------------------------------------------------------------------------
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]


4. Operator.itemgetter-Funktion vom Operatormodul bereitgestellt Die Itemgetter-Funktion wird verwendet, um die Daten der Objektabmessungen abzurufen. Die Parameter sind einige Seriennummern (dh die Seriennummern der im Objekt abzurufenden Daten).

a = [1,2,3]
>>> b=operator.itemgetter(1)   //定义函数b,获取对象的第1个域的值
>>> b(a)
2
>>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值
>>> b(a)
(2, 1)

Es ist zu beachten, dass die Funktion „operator.itemgetter“ den Wert nicht erhält, sondern eine Funktion definiert, über die die Funktion auf das Objekt angewendet werden kann, um den Wert zu erhalten.

Verwendung von itemgetter in sort:

from operator import itemgetter
alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]
# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:
print sorted(alist, cmp = None, key = itemgetter(2, 1), reverse = False)
print sorted(alist, cmp = None, key = lambda x:itemgetter(2, 1)(x), reverse = False)
print sorted(alist, cmp = None, key = lambda x:map(int, itemgetter(2, 1)(x)), reverse = False)
--------------------------------------------------------------------------------------------------
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]
[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]

Das Obige ist die grundlegende Verwendung der vom Editor eingeführten Methode sort() in Python. Ich hoffe, dass dies der Fall ist Für Sie hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten!

[Verwandte Empfehlungen]

1.

Teilen Sie Beispiele für die Verwendung der Sortierung in Python

2.

Detailliertes Tutorial zur Verwendung von value() in Python

3.

Beispiel für die Verwendung von sort_values ​​​​isin in Pandas DataFrame

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Verwendung von sort() in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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