Ermitteln der n Elemente einer Liste in der Reihenfolge der größten und kleinsten Werte in Python

Geschäft

Wenn Sie die n Elemente einer Liste (Array) in Python in der Reihenfolge des größten oder kleinsten Wertes abrufen möchten und n=1 ist, können Sie die folgende eingebaute Funktion verwenden.

  • max()
  • min()

Wenn n>1 ist, gibt es zwei Möglichkeiten, die Liste zu sortieren oder das Heapq-Modul der Standardbibliothek zu verwenden.

  • Ermitteln der Höchst- und Mindestwerte: max(),min()
  • n Elemente in der Reihenfolge von Höchst- und Mindestwert abrufen:sortieren
  • n Elemente in der Reihenfolge von Höchst- und Mindestwert abrufen:heapqModul

Wenn die Anzahl der abzurufenden Elemente groß ist, ist es effizienter, sie zuerst mit sorted() oder sort() zu sortieren, und wenn die Anzahl klein ist, sind nargest() und nsmallest() des heapq-Moduls effizienter.

Um die Indizes der Höchst- und Mindestwerte zu erhalten, verwenden Sie max(), min() und index().

Ermitteln der Höchst- und Mindestwerte: max(), min()

Um das Maximum und Minimum der Liste zu ermitteln, verwenden Sie die eingebauten Funktionen max() und min().

l = [3, 6, 7, -1, 23, -10, 18]

print(max(l))
# 23

print(min(l))
# -10

Ermittelt n Elemente in der Reihenfolge von Höchst- und Mindestwert: Sortieren

Wenn Sie die n Elemente einer Liste in der Reihenfolge des größten oder kleinsten Wertes erhalten möchten, ist die erste Methode, die Liste zu sortieren (sortieren).

Um die Liste zu sortieren, verwenden Sie die eingebaute Funktion sorted() oder die sort()-Methode der Liste. sorted() liefert eine neue sortierte Liste, während sort() die ursprüngliche Liste neu sortiert.

Durch Umschalten der aufsteigenden\absteigenden Reihenfolge mit dem Argument reverse und Auswahl einer beliebigen Anzahl von Slices von oben kann man n Elemente in der Reihenfolge vom größten\kleinsten Wert der Liste erhalten.

ld = sorted(l, reverse=True)
print(ld)
# [23, 18, 7, 6, 3, -1, -10]

print(ld[:3])
# [23, 18, 7]

la = sorted(l)
print(la)
# [-10, -1, 3, 6, 7, 18, 23]

print(la[:3])
# [-10, -1, 3]

Sie können sie alle in eine Zeile schreiben.

print(sorted(l, reverse=True)[:3])
# [23, 18, 7]

print(sorted(l)[:3])
# [-10, -1, 3]

Wenn es Ihnen nichts ausmacht, die Reihenfolge der ursprünglichen Liste zu ändern, können Sie die Methode sort() verwenden.

print(l)
# [3, 6, 7, -1, 23, -10, 18]

l.sort(reverse=True)
print(l[:3])
# [23, 18, 7]

print(l)
# [23, 18, 7, 6, 3, -1, -10]

l.sort()
print(l[:3])
# [-10, -1, 3]

print(l)
# [-10, -1, 3, 6, 7, 18, 23]

n Elemente in der Reihenfolge von Höchst- und Mindestwert abrufen: heapqModul

Wenn Sie die n Elemente einer Liste in der Reihenfolge des größten oder kleinsten Wertes abrufen möchten, können Sie das Modul heapq verwenden.

Verwenden Sie die folgende Funktion im heapq-Modul. In diesem Fall wird die ursprüngliche Liste nicht verändert.

  • nlargest()
  • nsmallest()

Das erste Argument ist die Anzahl der abzurufenden Elemente, das zweite Argument ist die anzusteuernde Iterable (Liste usw.).

import heapq

l = [3, 6, 7, -1, 23, -10, 18]

print(heapq.nlargest(3, l))
# [23, 18, 7]

print(heapq.nsmallest(3, l))
# [-10, -1, 3]

print(l)
# [3, 6, 7, -1, 23, -10, 18]

Wie ich eingangs schrieb, ist es bei einer großen Anzahl von Elementen, die abgerufen werden sollen, effizienter, diese zuerst mit sorted() oder sort() zu sortieren, und bei einer kleinen Anzahl sind nargest() und nsmallest() des heapq-Moduls effizienter.

Copied title and URL