Obtenció dels n elements d’una llista ordenats a partir dels valors més grans i més petits de Python

Negocis

Si voleu obtenir els n elements d’una llista (matriu) en ordre a partir del valor més gran o més petit de Python, i n=1, podeu utilitzar la següent funció integrada.

  • max()
  • min()

Si n>1, hi ha dues maneres d’ordenar la llista o utilitzar el mòdul heapq de la biblioteca estàndard.

  • Obteniu els valors màxim i mínim:max(),min()
  • Obteniu n elements per ordre de valor màxim i mínim:ordenar
  • Obteniu n elements per ordre de valor màxim i mínim:heapqMòdul

Si el nombre d’elements que cal recuperar és gran, és més eficient ordenar-los primer utilitzant sortd() o sort(), i si el nombre és petit, nargest() i nsmallest() del mòdul heapq són més eficients.

Per obtenir els índexs dels valors màxim i mínim, utilitzeu max(), min() i index().

Obteniu els valors màxim i mínim:max(),min()

Per obtenir els elements màxims i mínims de la llista, utilitzeu les funcions integrades max() i min().

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

print(max(l))
# 23

print(min(l))
# -10

Obteniu n elements per ordre de valor màxim i mínim: Ordena

Si voleu obtenir els n elements d’una llista ordenats a partir del valor més gran o més petit, el primer mètode és ordenar (ordenar) la llista.

Per ordenar la llista, utilitzeu la funció integrada sortd() o el mètode sort() de la llista. sortd() retorna una nova llista ordenada, mentre que sort() reordena la llista original.

Si canvieu l’ordre ascendent/descendent amb l’argument invers i seleccioneu qualsevol nombre de llesques de la part superior, podeu obtenir n elements en ordre del valor més gran/menor de la llista.

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]

Podeu escriure-les totes en una línia.

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

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

Si no us importa canviar l’ordre de la llista original, podeu utilitzar el mètode 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]

Obteniu n elements per ordre de valor màxim i mínim:heapqMòdul

Si voleu obtenir els n elements d’una llista ordenats a partir del valor més gran o més petit, podeu utilitzar el mòdul heapq.

Utilitzeu la funció següent al mòdul heapq. En aquest cas, la llista original no es canviarà.

  • nlargest()
  • nsmallest()

El primer argument és el nombre d’elements que s’han de recuperar, i el segon argument és l’iterable (llista, etc.) que s’ha d’orientar.

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]

Com vaig escriure al principi, si el nombre d’elements a recuperar és gran, és més eficient ordenar-los primer amb sorted() o sort(), i si el nombre és petit, nargest() i nsmallest() de el mòdul heapq és més eficient.