Skip to content

Obtenir les n éléments les plus grands/petits d’une liste en Python

En Python, vous pouvez obtenir les éléments maximum et minimum d’une liste avec les fonctions intégrées max() et min(). De plus, si vous souhaitez obtenir les n éléments les plus grands/les plus petits, vous pouvez trier la liste ou utiliser le module heapq de la bibliothèque standard.

  • Obtenez les éléments maximum et minimum :max(), min()
  • Obtenez les n éléments les plus grands/les plus petits :sorted(), sort()
  • Obtenir les n éléments les plus grands/les plus petits : le module heapq

Si le nombre d’éléments à obtenir est grand, il est plus efficace de trier d’abord avec triés() ou sort(), tandis que nlargest() ou nsmallest() dans le module heapq est plus efficace si le nombre est petit.

Obtenez les éléments maximum et minimum :max(), min()

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

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

print(max(l))
# 23

print(min(l))
# -10

Obtenez les n éléments les plus grands/les plus petits :sorted(), sort()

Vous pouvez obtenir les n éléments les plus grands/les plus petits en triant la liste.

Utilisez la fonction intégrée sorted() ou la méthode sort() d’une liste. triée() renvoie une nouvelle liste triée et sort() trie la liste d’origine elle-même.

En changeant l’ordre croissant/décroissant avec le paramètre inverse et en sélectionnant n’importe quel nombre d’éléments par découpage, vous pouvez obtenir les n éléments les plus grands/les plus petits.

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 écrire sur une seule ligne.

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

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

Vous pouvez utiliser la méthode sort() si cela n’a pas d’importance si l’ordre de la liste d’origine change.

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 les n éléments les plus grands/les plus petits : le module heapq

Vous pouvez également utiliser le module heapq pour obtenir les n éléments les plus grands/les plus petits d’une liste.

Utilisez les fonctions nlargest() et nsmallest() du module heapq. Dans ce cas, la liste d’origine n’est pas modifiée.

Le premier argument est le nombre d’éléments à renvoyer, et le second est l’itérable cible (par exemple, liste).

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]

Si le nombre d’éléments à obtenir est grand, il est plus efficace de trier d’abord avec triés() ou sort(), tandis que nlargest() ou nsmallest() dans le module heapq est plus efficace si le nombre est petit.