Získání n prvků seznamu v pořadí od největší a nejmenší hodnoty v jazyce Python

Podnikání

Pokud chcete získat n prvků seznamu (pole) v pořadí od největší nebo nejmenší hodnoty v jazyce Python a n=1, můžete použít následující vestavěnou funkci.

  • max()
  • min()

Pokud je n>1, existují dva způsoby, jak seznam seřadit nebo použít modul heapq standardní knihovny.

  • Získání maximální a minimální hodnoty: max(),min()
  • Získejte n prvků v pořadí podle maximální a minimální hodnoty:třídit
  • Získejte n prvků v pořadí podle maximální a minimální hodnoty:heapqModul

Pokud je počet prvků, které je třeba získat, velký, je efektivnější je nejprve seřadit pomocí sorted() nebo sort(), a pokud je počet prvků malý, jsou efektivnější funkce nargest() a nsmallest() modulu heapq.

Chcete-li získat indexy maximálních a minimálních hodnot, použijte funkce max(), min() a index().

Získání maximální a minimální hodnoty: max(), min()

Chcete-li získat maximální a minimální prvky seznamu, použijte vestavěné funkce max() a min().

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

print(max(l))
# 23

print(min(l))
# -10

Získejte n prvků v pořadí podle maximální a minimální hodnoty: Třídit

Pokud chcete získat n prvků seznamu v pořadí od největší nebo nejmenší hodnoty, první metodou je seřazení (sort) seznamu.

Chcete-li seznam setřídit, použijte vestavěnou funkci sorted() nebo metodu sort() seznamu. sorted() vrací nový setříděný seznam, zatímco sort() mění pořadí původního seznamu.

Přepnutím vzestupného\sestupného pořadí pomocí argumentu reverse a výběrem libovolného počtu dílků shora můžete získat n prvků v pořadí od největší\menší hodnoty seznamu.

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]

Můžete je napsat všechny na jeden řádek.

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

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

Pokud vám nevadí změnit pořadí původního seznamu, můžete použít metodu sort().

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]

Získejte n prvků v pořadí podle maximální a minimální hodnoty: heapqModul

Pokud chcete získat n prvků seznamu v pořadí od největší nebo nejmenší hodnoty, můžete použít modul heapq.

V modulu heapq použijte následující funkci. V tomto případě se původní seznam nezmění.

  • nlargest()
  • nsmallest()

Prvním argumentem je počet prvků, které se mají načíst, a druhým argumentem je iterovatelná položka (seznam atd.), na kterou se má zaměřit.

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]

Jak jsem napsal na začátku, pokud je počet prvků, které se mají získat, velký, je efektivnější je nejprve seřadit pomocí sorted() nebo sort(), a pokud je počet malý, jsou efektivnější nargest() a nsmallest() modulu heapq.