web-dev-qa-db-fra.com

Supprimer les valeurs Max et Min de python liste d'entiers

Je ne suis pas complètement vert à Python, mais je suis intéressé à apprendre/garder de bonnes pratiques pendant que je développe mes compétences.

Je veux supprimer les valeurs hautes et basses d'une liste de nombres, ce que je sais faire, mais je suis curieux de savoir s'il existe un moyen meilleur/préféré de le faire.

mylist = [1, 4, 0, 3, 2]
mylist.sort() #[0, 1, 2, 3, 4]
trimmed = mylist[1:-1] #[1, 2, 3]

J'ai obtenu la réponse souhaitée, mais ai-je obtenu la bonne réponse de manière appropriée?

20
Esteban

Voici une autre façon de le faire si vous ne souhaitez pas modifier l'ordre des éléments:

mylist = [1, 4, 0, 3, 2]
mylist.remove(max(mylist))
mylist.remove(min(mylist))

Suppose que le haut/bas n'a pas de doublons dans la liste, ou s'il y en a, qu'il est OK de supprimer un seul d'entre eux.

Cela devra faire 2 à 4 passages dans la liste: deux pour trouver les valeurs max et min, et jusqu'à 2 pour trouver les valeurs à supprimer (si elles se trouvent toutes les deux à la fin de la liste). Vous pouvez réduire cela à un en écrivant une boucle Python pour trouver le max et le min en un seul passage (et n'oubliez pas l'index de chacun pour pouvoir supprimer les éléments par index après la boucle). Cependant, min() et max() sont implémentés en C, donc les remplacer par Python code entraînerait probablement une baisse des performances même si cela vous permettait de réduire le nombre de passes.

35
kindall