Skip to content

En Python, vous pouvez les éléments maximum et minimum d’une liste à l’aide des fonctions intégrées 𝐦‌𝐚‌𝐱‌() et 𝐦‌𝐢‌𝐧‌() . Pour extraire les n éléments les plus grands/les plus petits, vous pouvez soit trier la liste, soit utiliser le module 𝐡‌𝐞‌𝐚‌𝐩‌𝐪‌ de la bibliothèque standard.

Si le nombre d’éléments à obtenir est important, il est plus efficace de trier d’abord avec 𝐬‌𝐨‌𝐫‌𝐭‌𝐞‌𝐝‌() ou 𝐬‌𝐨‌𝐫‌𝐭‌() , tandis que 𝐧‌𝐥‌𝐚‌𝐫‌𝐠‌𝐞‌𝐬‌𝐭‌() ou 𝐧‌𝐬‌𝐦‌𝐚‌𝐥‌𝐥‌𝐞‌𝐬‌𝐭‌ () dans le module Le 𝐡‌𝐞‌𝐚‌𝐩‌𝐪‌ est plus efficace si le nombre est petit.

Utilisez 𝐦‌𝐚‌𝐱‌() , 𝐦‌𝐢‌𝐧‌() et 𝐢‌𝐧‌𝐝‌𝐞‌𝐱‌() pour obtenir l’indice de la valeur maximale et minimale. Pour plus d’informations, consultez l’article suivant.

Obtenez les éléments maximum et minimum : 𝐦‌𝐚‌𝐱‌() , 𝐦‌𝐢‌𝐧‌()

Utilisez les fonctions intégrées 𝐦‌𝐚‌𝐱‌() et 𝐦‌𝐢‌𝐧‌() 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 

Obtenir les n éléments les plus grands/les plus petits : 𝐬‌𝐨‌𝐫‌𝐭‌𝐞‌𝐝‌() , 𝐬‌𝐨‌𝐫‌𝐭‌()

Pour obtenir les n éléments les plus grands/les plus petits, vous pouvez trier la liste en utilisant soit la fonction intégrée 𝐬‌𝐨‌𝐫‌𝐭‌𝐞‌𝐝‌() , soit la méthode 𝐬‌𝐨‌𝐫‌𝐭‌() d’une liste.

La fonction 𝐬‌𝐨‌𝐫‌𝐭‌𝐞‌𝐝‌() renvoie une nouvelle liste triée, tandis que 𝐬‌𝐨‌𝐫‌𝐭‌() modifie la liste d’origine en place. En spécifiant le paramètre 𝐫‌𝐞‌𝐯‌𝐞‌𝐫‌𝐬‌𝐞‌ , vous pouvez contrôler l’ordre croissant ou décroissant du tri. Ensuite, en utilisant le découpage, vous pouvez sélectionner le nombre d’éléments souhaités.

l = [3, 6, 7, -1, 23, -10, 18] 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 l’opération entière sur une seule ligne.

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

Si vous n’avez pas besoin de conserver l’ordre de la liste d’origine, vous pouvez utiliser la méthode 𝐬‌𝐨‌𝐫‌𝐭‌() .

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 𝐡‌𝐞‌𝐚‌𝐩‌𝐪‌

Le module 𝐡‌𝐞‌𝐚‌𝐩‌𝐪‌ est une autre option pour récupérer les n-plus grands/plus petits éléments d’une liste.

Utilisez les fonctions 𝐧‌𝐥‌𝐚‌𝐫‌𝐠‌𝐞‌𝐬‌𝐭‌() et 𝐧‌𝐬‌𝐦‌𝐚‌𝐥‌𝐥‌𝐞‌𝐬‌𝐭‌() du module 𝐡‌𝐞‌𝐚‌𝐩‌𝐪‌ . 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, une 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] 

Pour les fonctions 𝐧‌𝐥‌𝐚‌𝐫‌𝐠‌𝐞‌𝐬‌𝐭‌() et 𝐧‌𝐬‌𝐦‌𝐚‌𝐥‌𝐥‌𝐞‌𝐬‌𝐭‌() , vous pouvez également définir 𝐤‌𝐞‌𝐲‌ comme troisième argument.

Pour obtenir un grand nombre d’éléments, il est plus efficace de trier d’abord la liste avec 𝐬‌𝐨‌𝐫‌𝐭‌𝐞‌𝐝‌() ou 𝐬‌𝐨‌𝐫‌𝐭‌() , tandis que pour un nombre plus petit, 𝐧‌𝐥‌𝐚‌𝐫‌𝐠‌𝐞‌𝐬‌𝐭‌() ou 𝐧‌𝐬‌𝐦‌𝐚‌𝐥‌𝐥‌𝐞‌𝐬‌𝐭‌() à partir du module 𝐡‌𝐞‌𝐚‌𝐩‌𝐪‌ serait un meilleur choix.

Les deux dernières fonctions (= 𝐧‌𝐥‌𝐚‌𝐫‌𝐠‌𝐞‌𝐬‌𝐭‌() et 𝐧‌𝐬‌𝐦‌𝐚‌𝐥‌𝐥‌𝐞‌𝐬‌𝐭‌() ) fonctionne mieux pour les valeurs plus petites de n (= le nombre d’éléments à obtenir). Pour les valeurs plus grandes, il est plus efficace d’utiliser la fonction sorted(). De plus, lorsque n==1, il est plus efficace d’utiliser les fonctions intégrées min() et max(). heapq — Algorithme de fichier d’attente de tas — Documentation Python 3.11.3