Pridobivanje n elementov seznama po vrstnem redu od največje do najmanjše vrednosti v Pythonu

Posel

Če želite pridobiti n elementov seznama (polja) po vrstnem redu od največje ali najmanjše vrednosti v programu Python in n=1, lahko uporabite naslednjo vgrajeno funkcijo.

  • max()
  • min()

Če je n>1, lahko seznam razvrstite na dva načina ali uporabite modul heapq standardne knjižnice.

  • Pridobite največjo in najmanjšo vrednost: max(),min()
  • Pridobi n elementov po vrstnem redu največje in najmanjše vrednosti:razvrščanje
  • Pridobi n elementov po vrstnem redu največje in najmanjše vrednosti:heapqModul

Če je število elementov, ki jih je treba pridobiti, veliko, jih je učinkoviteje najprej razvrstiti s sorted() ali sort(), če pa je število majhno, sta učinkovitejši metodi nargest() in nsmallest() modula heapq.

Za pridobitev indeksov največjih in najmanjših vrednosti uporabite funkcije max(), min() in index().

Pridobite največjo in najmanjšo vrednost: max(), min()

Za pridobitev največjega in najmanjšega elementa seznama uporabite vgrajeni funkciji max() in min().

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

print(max(l))
# 23

print(min(l))
# -10

Pridobi n elementov po vrstnem redu največje in najmanjše vrednosti: Razvrsti

Če želite dobiti n elementov seznama po vrstnem redu od največje do najmanjše vrednosti, je prva metoda razvrščanje seznama.

Za razvrščanje seznama uporabite vgrajeno funkcijo sorted() ali metodo sort() seznama. sorted() vrne nov razvrščen seznam, metoda sort() pa spremeni vrstni red prvotnega seznama.

S preklopom naraščajočega in padajočega vrstnega reda z argumentom reverse in izbiro poljubnega števila rezin z vrha lahko dobite n elementov v vrstnem redu od največje in najmanjše vrednosti seznama.

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]

Vse lahko zapišete v eno vrstico.

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

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

Če vas ne moti spreminjanje vrstnega reda prvotnega seznama, lahko uporabite metodo 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]

Pridobi n elementov po vrstnem redu največje in najmanjše vrednosti: heapqModul

Če želite dobiti n elementov seznama po vrstnem redu od največje do najmanjše vrednosti, lahko uporabite modul heapq.

V modulu heapq uporabite naslednjo funkcijo. V tem primeru se prvotni seznam ne bo spremenil.

  • nlargest()
  • nsmallest()

Prvi argument je število elementov, ki jih je treba pridobiti, drugi argument pa je iterabilnost (seznam itd.), ki jo je treba izbrati.

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]

Kot sem zapisal na začetku, je, če je število elementov, ki jih je treba pridobiti, veliko, bolj učinkovito, da jih najprej razvrstimo s sorted() ali sort(), če pa je število majhno, sta bolj učinkovita nargest() in nsmallest() iz modula heapq.

Copied title and URL