Obtención de los n elementos de una lista en orden de los valores más grandes y más pequeños en Python

Negocio

Si quieres obtener los n elementos de una lista (array) en orden desde el mayor o menor valor en Python, y n=1, puedes utilizar la siguiente función incorporada.

  • max()
  • min()

Si n>1, hay dos maneras de ordenar la lista o utilizar el módulo heapq de la biblioteca estándar.

  • Obtener los valores máximos y mínimos: max(),min()
  • Obtener n elementos en orden de valor máximo y mínimo:ordenar
  • Obtener n elementos en orden de valor máximo y mínimo:heapqMódulo

Si el número de elementos a recuperar es grande, es más eficiente ordenarlos primero usando sorted() o sort(), y si el número es pequeño, nargest() y nsmallest() del módulo heapq son más eficientes.

Para obtener los índices de los valores máximos y mínimos, utilice max(), min() e index().

Obtener los valores máximos y mínimos: max(), min()

Para obtener los elementos máximos y mínimos de la lista, utilice las funciones incorporadas max() y min().

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

print(max(l))
# 23

print(min(l))
# -10

Obtener n elementos en orden de valor máximo y mínimo: Ordenar

Si quieres obtener los n elementos de una lista en orden a partir del mayor o menor valor, el primer método es ordenar (sort) la lista.

Para ordenar la lista, utilice la función incorporada sorted() o el método sort() de la lista. sorted() devuelve una nueva lista ordenada, mientras que sort() reordena la lista original.

Cambiando el orden ascendente\descendente con el argumento reverse y seleccionando cualquier número de rebanadas desde la parte superior, puede obtener n elementos en orden desde el valor mayor\minor de la lista.

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]

Puedes escribirlos todos en una sola línea.

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

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

Si no te importa cambiar el orden de la lista original, puedes utilizar el método 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]

Obtener n elementos en orden de valor máximo y mínimo: heapqMódulo

Si quieres obtener los n elementos de una lista en orden desde el mayor o menor valor, puedes utilizar el módulo heapq.

Utilice la siguiente función en el módulo heapq. En este caso, la lista original no se modificará.

  • nlargest()
  • nsmallest()

El primer argumento es el número de elementos que hay que recuperar, y el segundo es el iterable (lista, etc.) al que hay que dirigirse.

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]

Como escribí al principio, si el número de elementos a recuperar es grande, es más eficiente ordenarlos primero con sorted() o sort(), y si el número es pequeño, nargest() y nsmallest() del módulo heapq son más eficientes.