De n elementen van een lijst op volgorde krijgen van de grootste en kleinste waarden in Python

Bedrijf

Indien je in Python de n elementen van een lijst (array) in volgorde van grootste of kleinste waarde wil krijgen, en n=1, kan je de volgende ingebouwde functie gebruiken.

  • max()
  • min()

Als n>1, zijn er twee manieren om de lijst te sorteren of de heapq module van de standaard bibliotheek te gebruiken.

  • Verkrijg de maximum en minimum waarden: max(),min()
  • Verkrijg n elementen in volgorde van maximum en minimum waarde:sorteren
  • Verkrijg n elementen in volgorde van maximum en minimum waarde:heapqModule

Als het aantal op te halen elementen groot is, is het efficiënter om ze eerst te sorteren met sorted() of sort(), en als het aantal klein is, zijn nargest() en nsmallest() van de heapq module efficiënter.

Om de indexen van de maximum en minimum waarden te krijgen, gebruik je max(), min() en index().

Verkrijg de maximum en minimum waarden: max(), min()

Om de maximum en minimum elementen van de lijst te krijgen, gebruik je de ingebouwde functies max() en min().

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

print(max(l))
# 23

print(min(l))
# -10

Verkrijg n elementen in volgorde van maximum- en minimumwaarde: Sorteren

Als je de n elementen van een lijst op volgorde van grootste of kleinste waarde wilt krijgen, is de eerste methode de lijst te sorteren (sorteren).

Om de lijst te sorteren, gebruikt u de ingebouwde functie sorted() of de sort() methode van de lijst. sorted() geeft een nieuwe gesorteerde lijst terug, terwijl sort() de oorspronkelijke lijst opnieuw ordent.

Door van oplopende naar aflopende volgorde te wisselen met het argument omgekeerd en een willekeurig aantal segmenten van bovenaf te selecteren, kunt u n elementen krijgen in volgorde van de grootste naar de kleinste waarde van de lijst.

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]

Je kunt ze allemaal op één regel schrijven.

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

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

Als je het niet erg vindt om de volgorde van de oorspronkelijke lijst te veranderen, kun je de methode sort() gebruiken.

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]

Verkrijg n elementen in volgorde van maximum en minimum waarde: heapqModule

Als je de n elementen van een lijst in volgorde van de grootste of kleinste waarde wilt krijgen, kun je de heapq module gebruiken.

Gebruik de volgende functie in de heapq module. In dit geval wordt de oorspronkelijke lijst niet gewijzigd.

  • nlargest()
  • nsmallest()

Het eerste argument is het aantal elementen dat moet worden opgehaald, en het tweede argument is de iterable (lijst, enz.) die moet worden opgehaald.

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]

Zoals ik in het begin schreef, als het aantal op te halen elementen groot is, is het efficiënter om ze eerst te sorteren met sorted() of sort(), en als het aantal klein is, zijn nargest() en nsmallest() van de heapq module efficiënter.