Obtenir les n éléments d’une liste dans l’ordre des valeurs les plus grandes et les plus petites en Python

Affaires

Si vous souhaitez obtenir les n éléments d'une liste (tableau) dans l'ordre de la plus grande ou de la plus petite valeur en Python, et que n=1, vous pouvez utiliser la fonction intégrée suivante.

  • max()
  • min()

Si n>1, il y a deux façons de trier la liste ou d'utiliser le module heapq de la bibliothèque standard.

  • Obtenir les valeurs maximales et minimales: max(),min()
  • Obtenir n éléments dans l'ordre de la valeur maximale et minimale:trier
  • Obtenir n éléments dans l'ordre de la valeur maximale et minimale:heapqModule

Si le nombre d'éléments à récupérer est grand, il est plus efficace de les trier d'abord en utilisant sorted() ou sort(), et si le nombre est petit, nargest() et nsmallest() du module heapq sont plus efficaces.

Pour obtenir les indices des valeurs maximales et minimales, utilisez max(), min() et index().

Obtenir les valeurs maximales et minimales: max(), min()

Pour obtenir les éléments maximum et minimum de la liste, utilisez les fonctions intégrées max() et min().

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

print(max(l))
# 23

print(min(l))
# -10

Obtenir n éléments dans l'ordre de la valeur maximale et minimale : Trier

Si vous voulez obtenir les n éléments d'une liste dans l'ordre de la plus grande ou de la plus petite valeur, la première méthode consiste à trier (trier) la liste.

Pour trier la liste, utilisez la fonction intégrée sorted() ou la méthode sort() de la liste. sorted() renvoie une nouvelle liste triée, tandis que sort() réorganise la liste originale.

En changeant l'ordre croissant\décroissant avec l'argument reverse et en sélectionnant un nombre quelconque de tranches à partir du haut, vous pouvez obtenir n éléments dans l'ordre de la valeur la plus grande\minor de la liste.

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]

Vous pouvez les écrire tous sur une seule ligne.

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

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

Si cela ne vous dérange pas de changer l'ordre de la liste originale, vous pouvez utiliser la méthode 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]

Obtenir n éléments dans l'ordre de la valeur maximale et minimale: heapqModule

Si vous voulez obtenir les n éléments d'une liste dans l'ordre de la plus grande ou de la plus petite valeur, vous pouvez utiliser le module heapq.

Utilisez la fonction suivante dans le module heapq. Dans ce cas, la liste originale ne sera pas modifiée.

  • nlargest()
  • nsmallest()

Le premier argument est le nombre d'éléments à récupérer, et le second est l'itérable (liste, etc.) à cibler.

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]

Comme je l'ai écrit au début, si le nombre d'éléments à récupérer est grand, il est plus efficace de les trier d'abord avec sorted() ou sort(), et si le nombre est petit, nargest() et nsmallest() du module heapq sont plus efficaces.