By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,267 Members | 1,800 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,267 IT Pros & Developers. It's quick & easy.

removing all instances of a certain value from a list

P: n/a
Hi,
I have a float array ( eg [-1.3, 1.22, 9.2, None, 2.3] ) but there are
many missing vlaues which are represented as None. I would like to
remove all such instances in one go.
There is a remove function but it removes only the first instance, is
there a delete/remove all function?
thanks
Mar 19 '08 #1
Share this Question
Share on Google+
4 Replies


P: n/a
On Wed, Mar 19, 2008 at 10:28 PM, Lee Sander <le*****@gmail.comwrote:
Hi,
I have a float array ( eg [-1.3, 1.22, 9.2, None, 2.3] ) but there are
many missing vlaues which are represented as None. I would like to
remove all such instances in one go.
There is a remove function but it removes only the first instance, is
there a delete/remove all function?
thanks
If it is ok to copy the list instead of mutating it, use a list comprehension:
>>L = [-1.3, 1.22, 9.2, None, 2.3]
[x for x in L if x is not None]
[-1.3, 1.22, 9.1999999999999993, 2.2999999999999998]

--
mvh Björn
Mar 19 '08 #2

P: n/a
Lee Sander <le*****@gmail.comwrites:
Hi,
I have a float array ( eg [-1.3, 1.22, 9.2, None, 2.3] ) but there are
many missing vlaues which are represented as None. I would like to
remove all such instances in one go.
There is a remove function but it removes only the first instance, is
there a delete/remove all function?
No, but you can easily simulate it using, for example:

lst[:] = (el for el in lst if el is not None)
Mar 19 '08 #3

P: n/a
On Mar 19, 11:28 pm, Lee Sander <lesa...@gmail.comwrote:
Hi,
I have a float array ( eg [-1.3, 1.22, 9.2, None, 2.3] ) but there are
many missing vlaues which are represented as None. I would like to
remove all such instances in one go.
There is a remove function but it removes only the first instance, is
there a delete/remove all function?
thanks
You can also do it with the filter function.
>>a= [-1.3, 1.22, 9.2, None, 2.3]
a=filter ( lambda b: b != None, a)
print a
[-1.3, 1.22, 9.1999999999999993, 2.2999999999999998]

Greetings Rainer
Mar 21 '08 #4

P: n/a
r.gr...@science-computing.de:
>a=filter ( lambda b: b != None, a)
With None it's better to use is/not is instead of ==/!=

Bye,
bearophile
Mar 21 '08 #5

This discussion thread is closed

Replies have been disabled for this discussion.