从python的整数列表中删除Max和Min值

问题描述 投票:17回答:1

我对Python并不完全是绿色的,但我有兴趣在培养技能的同时学习/保持良好的实践。

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

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

我得到了理想的答案,但我得到了正确的答案吗?

python list max min
1个回答
33
投票

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

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

假设高/低在列表中没有任何重复,或者如果有,则可以仅删除其中一个。

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

© www.soinside.com 2019 - 2024. All rights reserved.