Luettelon n elementin hakeminen suurimman ja pienimmän arvon mukaisessa järjestyksessä Pythonissa

liiketoiminta

Jos haluat saada luettelon (array) n elementtiä järjestyksessä suurimmasta tai pienimmästä arvosta Pythonissa ja n=1, voit käyttää seuraavaa sisäänrakennettua funktiota.

  • max()
  • min()

Jos n>1, on kaksi tapaa lajitella lista tai käyttää standardikirjaston heapq-moduulia.

  • Hae maksimi- ja minimiarvot: max(),min()
  • Hae n elementtiä suurimman ja pienimmän arvon mukaisessa järjestyksessä.:lajittele
  • Hae n elementtiä suurimman ja pienimmän arvon mukaisessa järjestyksessä.:heapqModuuli

Jos haettavien elementtien määrä on suuri, on tehokkaampaa lajitella ne ensin sorted()- tai sort()-ohjelmalla, ja jos määrä on pieni, heapq-moduulin nargest()- ja nsmallest()-ohjelmat ovat tehokkaampia.

Saat maksimi- ja minimiarvojen indeksit käyttämällä max(), min() ja index().

Hae maksimi- ja minimiarvot: max(), min()

Saat listan suurimman ja pienimmän elementin käyttämällä sisäänrakennettuja funktioita max() ja min().

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

print(max(l))
# 23

print(min(l))
# -10

Hae n elementtiä suurimman ja pienimmän arvon mukaisessa järjestyksessä: Lajittele

Jos haluat saada listan n elementtiä järjestykseen suurimmasta tai pienimmästä arvosta, ensimmäinen tapa on lajitella (lajitella) lista.

Voit lajitella listan käyttämällä sisäänrakennettua funktiota sorted() tai listan sort()-metodia. sorted() palauttaa uuden lajitellun listan, kun taas sort() järjestää alkuperäisen listan uudelleen.

Vaihtamalla nousevaa\laskevaa järjestystä argumentilla reverse ja valitsemalla minkä tahansa määrän viipaleita ylhäältä, saat n elementtiä järjestyksessä listan suurimmasta\ pienimmästä arvosta alkaen.

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]

Voit kirjoittaa ne kaikki yhdelle riville.

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

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

Jos alkuperäisen listan järjestyksen muuttaminen ei haittaa, voit käyttää sort()-metodia.

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]

Hae n elementtiä suurimman ja pienimmän arvon mukaisessa järjestyksessä.: heapqModuuli

Jos haluat saada listan n elementtiä suurimman tai pienimmän arvon mukaisessa järjestyksessä, voit käyttää heapq-moduulia.

Käytä seuraavaa funktiota heapq-moduulissa. Tässä tapauksessa alkuperäistä luetteloa ei muuteta.

  • nlargest()
  • nsmallest()

Ensimmäinen argumentti on haettavien elementtien määrä ja toinen argumentti on iteroitava kohde (lista jne.).

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]

Kuten alussa kirjoitin, jos haettavien elementtien määrä on suuri, on tehokkaampaa lajitella ne ensin sorted()- tai sort()-ohjelmalla, ja jos määrä on pieni, heapq-moduulin nargest()- ja nsmallest()-ohjelmat ovat tehokkaampia.