Ответ 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, вероятно, приведет к снижению производительности, даже если это позволит вам сократить количество проходов.