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:
heapq
Mó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.
- Artículos relacionados:Ordenar una lista en Python: la diferencia entre ordenada y clasificada
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.