从python整数列表中删除最大值和最小值

从python整数列表中删除最大值和最小值,python,list,max,min,Python,List,Max,Min,我对Python并不完全陌生,但我对在发展技能的同时学习/保持良好的实践很感兴趣 我想从数字列表中删除高值和低值,我知道怎么做,但我很好奇是否有更好的/首选的方法 mylist = [1, 4, 0, 3, 2] mylist.sort() #[0, 1, 2, 3, 4] trimmed = mylist[1:-1] #[1, 2, 3] 我得到了想要的答案,但我是否得到了正确的答案?如果您不想更改项目的顺序,这里有另一种方法: mylist = [1, 4, 0, 3, 2] mylist

我对Python并不完全陌生,但我对在发展技能的同时学习/保持良好的实践很感兴趣

我想从数字列表中删除高值和低值,我知道怎么做,但我很好奇是否有更好的/首选的方法

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

我得到了想要的答案,但我是否得到了正确的答案?

如果您不想更改项目的顺序,这里有另一种方法:

mylist = [1, 4, 0, 3, 2]
mylist.remove(max(mylist))
mylist.remove(min(mylist))
假设高/低列表中没有任何重复项,或者如果有,可以只删除其中一项


这将需要在列表中进行2-4次遍历:两次查找最大值和最小值,最多2次查找要删除的值(如果它们恰好都位于列表的末尾)。您可以通过编写一个Python循环,在一次传递中找到max和min(并记住每个循环的索引,以便可以在循环后按索引删除项目),将其简化为一个循环。但是,
min()
max()
是用C实现的,因此用Python代码替换它们可能会导致性能降低,即使它允许您减少传递次数。

注意,执行4次传递可能仍然比排序列表快,但是,如果您想保留
mylist
,并在
trimmed
中保留修剪后的版本,您应该先复制它。是的
trimmed=mylist[:]
然后对
trimmed
执行操作。