Удалите значения Max и Min из списка чисел Python - PullRequest
17 голосов
/ 14 апреля 2011

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

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

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

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

1 Ответ

34 голосов
/ 14 апреля 2011

Вот еще один способ сделать это, если вы не хотите изменять порядок элементов:

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

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

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

...