Удалить значения Max и Min из списка целых чисел python

Я не полностью зелёный для Python, но я заинтересован в изучении/сохранении хороших практик, пока я развиваю свои навыки.

Я хочу удалить верхние и нижние значения из списка чисел, которые я знаю, как это сделать, но мне любопытно, есть ли лучший/предпочтительный способ сделать это.

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

Я получаю желаемый ответ, но правильно ли я получил правильный ответ?

Ответ 1

Здесь другой способ сделать это, если вы не хотите изменять порядок элементов:

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

Предполагает, что в верхнем/нижнем случае нет дубликатов в списке, или если есть, что это нормально, чтобы удалить только один из них.

Для этого нужно выполнить 2-4 прохода по списку: два для определения значений max и min и до 2, чтобы найти значения для удаления (если они оба оказались в конце списка). Вы можете уменьшить это до одного, написав цикл Python, чтобы найти max и min за один проход (и помните индекс каждого, чтобы вы могли удалить элементы по индексу после цикла). Тем не менее, min() и max() реализованы на C, поэтому замена их кодом Python, вероятно, приведет к снижению производительности, даже если это позволит вам сократить количество проходов.