Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove Max and Min values from python list of integers

Tags:

python

list

max

min

I am not completely green to Python, but I am interested in learning/keeping good practices while I develop my skills.

I want to remove the high and low values from a list of numbers, which I know how to do, but am curious if there is a better/preferred way to do this.

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

I get the desired answer, but did I get the right answer appropriately?

like image 821
Esteban Avatar asked Apr 13 '11 22:04

Esteban


People also ask

How do you remove an integer element from a list in Python?

In Python, use list methods clear() , pop() , and remove() to remove items (elements) from a list. It is also possible to delete items using del statement by specifying a position or range with an index or slice.

How do you remove certain items from a list in Python?

How to Remove an Element from a List Using the remove() Method in Python. To remove an element from a list using the remove() method, specify the value of that element and pass it as an argument to the method. remove() will search the list to find it and remove it.

How do you find the maximum and minimum of a list in Python?

Use Python's min() and max() to find smallest and largest values in your data. Call min() and max() with a single iterable or with any number of regular arguments. Use min() and max() with strings and dictionaries.


2 Answers

Here's another way to do it if you don't want to change the order of the items:

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

Assumes that the high/low don't have any duplicates in the list, or if there are, that it's OK to remove only one of them.

This will need to do 2-4 passes through the list: two to find the max and min values, and up to 2 to find the values to remove (if they both happen to be at the end of the list). You could reduce this to one by writing a Python loop to find the max and min in a single pass (and remember the index of each so you can delete the items by index after the loop). However, min() and max() are implemented in C, so replacing them with Python code would probably result in lower performance even if it allowed you to reduce the number of passes.

like image 172
kindall Avatar answered Sep 25 '22 01:09

kindall


I came up with this because I had duplicates in the list I was trying to modify, so instead of running mylist.remove(min(mylist)) multiple times because it only removes one value at a time I modified it in one line

mylist = [i for i in mylist if i > min(mylist) and i < max(mylist)]
like image 45
Maged Gewili Avatar answered Sep 22 '22 01:09

Maged Gewili