我对 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 循环以在单次通过中找到最大值和最小值来将其减少到一个(并记住每个的索引,以便您可以在循环后按索引删除项目)。但是,min()
andmax()
是用 C 实现的,因此用 Python 代码替换它们可能会导致性能下降,即使它允许您减少传递次数。
我必须删除最大元素并将列表存储在一个变量中,并且与最小元素相同。如果我将它存储在变量中,则通过使用删除函数,它不会给出任何输出。所以要存储它
arr = [1, 2, 5, 4, 3]
arr.sort()
remmax = arr[0:-1]
remmin = arr[1:]
print(remmax)
print(remmin)