Hent de n elementer i en liste i rækkefølge fra den største og mindste værdi i Python

Forretning

Hvis du vil hente de n elementer i en liste (array) i rækkefølge fra den største eller mindste værdi i Python, og n=1, kan du bruge følgende indbyggede funktion.

  • max()
  • min()

Hvis n>1, er der to måder at sortere listen på, eller du kan bruge heapq-modulet i standardbiblioteket.

  • Få de maksimale og minimale værdier: max(),min()
  • Hent n elementer i rækkefølge efter højeste og laveste værdi:sortere
  • Hent n elementer i rækkefølge efter højeste og laveste værdi:heapqModul

Hvis antallet af elementer, der skal hentes, er stort, er det mere effektivt at sortere dem først ved hjælp af sorted() eller sort(), og hvis antallet er lille, er nargest() og nsmallest() fra heapq-modulet mere effektive.

For at få indeksene for maksimum- og minimumsværdierne skal du bruge max(), min() og index().

Få de maksimale og minimale værdier: max(), min()

For at få det største og mindste element i listen skal du bruge de indbyggede funktioner max() og min().

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

print(max(l))
# 23

print(min(l))
# -10

Hent n elementer i rækkefølge efter maksimal og minimal værdi: Sort

Hvis du vil have de n elementer i en liste i rækkefølge fra den største eller mindste værdi, er den første metode at sortere (sortere) listen.

Hvis du vil sortere listen, skal du bruge den indbyggede funktion sorted() eller listens sort()-metode. sorted() returnerer en ny sorteret liste, mens sort() omarrangerer den oprindelige liste.

Ved at skifte opadgående\nedadgående rækkefølge med argumentet reverse og vælge et vilkårligt antal skiver fra toppen kan du få n elementer i rækkefølge fra den største\minde værdi i listen.

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]

Du kan skrive dem alle på én linje.

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

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

Hvis du ikke har noget imod at ændre rækkefølgen i den oprindelige liste, kan du bruge metoden 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]

Hent n elementer i rækkefølge efter højeste og laveste værdi: heapqModul

Hvis du ønsker at hente de n elementer i en liste i rækkefølge fra den største eller mindste værdi, kan du bruge heapq-modulet.

Brug følgende funktion i heapq-modulet. I dette tilfælde vil den oprindelige liste ikke blive ændret.

  • nlargest()
  • nsmallest()

Det første argument er antallet af elementer, der skal hentes, og det andet argument er den iterable (liste osv.), der skal angives.

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]

Som jeg skrev i begyndelsen, hvis antallet af elementer, der skal hentes, er stort, er det mere effektivt at sortere dem først med sorted() eller sort(), og hvis antallet er lille, er nargest() og nsmallest() i heapq-modulet mere effektive.

Copied title and URL