Získanie n prvkov zoznamu v poradí od najväčšej a najmenšej hodnoty v jazyku Python

obchodné

Ak chcete získať n prvkov zoznamu (poľa) v poradí od najväčšej alebo najmenšej hodnoty v jazyku Python a n=1, môžete použiť nasledujúcu vstavanú funkciu.

  • max()
  • min()

Ak je n>1, existujú dva spôsoby triedenia zoznamu alebo použitie modulu heapq štandardnej knižnice.

  • Získanie maximálnych a minimálnych hodnôt: max(),min()
  • Získanie n prvkov v poradí podľa maximálnej a minimálnej hodnoty:triediť
  • Získanie n prvkov v poradí podľa maximálnej a minimálnej hodnoty:heapqModul

Ak je počet prvkov, ktoré sa majú získať, veľký, je efektívnejšie ich najprv zoradiť pomocou sorted() alebo sort(), a ak je ich počet malý, efektívnejšie sú nargest() a nsmallest() modulu heapq.

Ak chcete získať indexy maximálnych a minimálnych hodnôt, použite funkcie max(), min() a index().

Získanie maximálnych a minimálnych hodnôt: max(), min()

Ak chcete získať maximálne a minimálne prvky zoznamu, použite vstavané funkcie max() a min().

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

print(max(l))
# 23

print(min(l))
# -10

Získajte n prvkov v poradí podľa maximálnej a minimálnej hodnoty: Triedenie

Ak chcete získať n prvkov zoznamu v poradí od najväčšej alebo najmenšej hodnoty, prvou metódou je zoradenie zoznamu.

Ak chcete zoznam zoradiť, použite vstavanú funkciu sorted() alebo metódu sort() zoznamu. sorted() vráti nový zoradený zoznam, zatiaľ čo sort() zmení poradie pôvodného zoznamu.

Prepnutím vzostupného\zostupného poradia pomocou argumentu reverse a výberom ľubovoľného počtu plátkov zhora môžete získať n prvkov v poradí od najväčšej\najmenšej hodnoty zoznamu.

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 ich napísať všetky do jedného riadku.

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

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

Ak vám nevadí zmena poradia pôvodného zoznamu, môžete použiť metódu 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ískanie n prvkov v poradí podľa maximálnej a minimálnej hodnoty: heapqModul

Ak chcete získať n prvkov zoznamu v poradí od najväčšej alebo najmenšej hodnoty, môžete použiť modul heapq.

V module heapq použite nasledujúcu funkciu. V tomto prípade sa pôvodný zoznam nezmení.

  • nlargest()
  • nsmallest()

Prvým argumentom je počet prvkov, ktoré sa majú získať, a druhým argumentom je iterovateľná položka (zoznam atď.), na ktorú sa má zamerať.

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]

Ako som napísal na začiatku, ak je počet prvkov, ktoré sa majú získať, veľký, je efektívnejšie ich najprv zoradiť pomocou sorted() alebo sort(), a ak je ich počet malý, efektívnejšie sú nargest() a nsmallest() modulu heapq.

Copied title and URL