Nimekirja n elemendi saamine suurima ja väikseima väärtuse järjekorras Pythonis

Äri

Kui soovite saada Pythonis loendi (massiivi) n elementi suurima või väikseima väärtuse järjekorras ja n=1, saate kasutada järgmist sisseehitatud funktsiooni.

  • max()
  • min()

Kui n>1, on loendi sorteerimiseks kaks võimalust või kasutada standardraamatukogu heapq-moodulit.

  • Saada maksimaalne ja minimaalne väärtus: max(),min()
  • saada n elementi maksimaalse ja minimaalse väärtuse järjekorras:sorteeri
  • saada n elementi maksimaalse ja minimaalse väärtuse järjekorras:heapqMoodul

Kui välja otsitavate elementide arv on suur, on tõhusam neid kõigepealt sorteerida kasutades sorted() või sort(), kui aga arv on väike, siis on tõhusamad heapq-mooduli nargest() ja nsmallest().

Maksimaalse ja minimaalse väärtuse indeksite saamiseks kasutage max(), min() ja index().

Saada maksimaalne ja minimaalne väärtus: max(), min()

Nimekirja maksimaalse ja minimaalse elemendi saamiseks kasutage sisseehitatud funktsioone max() ja min().

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

print(max(l))
# 23

print(min(l))
# -10

Saada n elementi maksimaalse ja minimaalse väärtuse järjekorras: Sorteeri

Kui soovite saada loendi n elementi järjekorras suurima või väikseima väärtuse järgi, on esimene meetod loendi sorteerimine (sorteerimine).

Nimekirja sorteerimiseks kasutage sisseehitatud funktsiooni sorted() või nimekirja meetodit sort(). sorted() tagastab uue sorteeritud nimekirja, samas kui sort() sorteerib esialgse nimekirja ümber.

Vahetades tõusvat \ kahanevat järjestust argumendiga reverse ja valides ülaltpoolt suvalise arvu viilusid, saate n elementi järjekorras nimekirja suurimast \väiksemast väärtusest alates.

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]

Võite kirjutada need kõik ühte rea.

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

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

Kui teid ei häiri algse loendi järjekorra muutmine, võite kasutada meetodit 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]

saada n elementi maksimaalse ja minimaalse väärtuse järjekorras: heapqMoodul

Kui soovite saada loendi n elementi suurima või väikseima väärtuse järjekorras, võite kasutada moodulit heapq.

Kasutage järgmist funktsiooni moodulis heapq. Sellisel juhul ei muudeta algset nimekirja.

  • nlargest()
  • nsmallest()

Esimene argument on välja otsitavate elementide arv ja teine argument on iterable (nimekiri jne.), millele soovitakse suunata.

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]

Nagu ma alguses kirjutasin, kui välja otsitavate elementide arv on suur, on efektiivsem neid kõigepealt sorteerida sorted() või sort() abil, ja kui arv on väike, on tõhusamad heapq-mooduli nargest() ja nsmallest().