Native Python function to remove NoneType elements from list?
I think the cleanest way to do this would be:
#lis = some list with NoneType's
filter(None, lis)
List comprehension, as other answers proposed or, for the sake of completeness:
clean = filter(lambda x: x is not None, lis)
If the list is huge, an iterator approach is superior:
from itertools import ifilter
clean = ifilter(lambda x: x is not None, lis)
You can do this using list comprehension:
clean = [x for x in lis if x != None]
As pointed in the comments you could also use is not
, even if it essentially compiles to the same bytecode:
clean = [x for x in lis if x is not None]
You could also used filter
(note: this will also filter empty strings, if you want more control over what you filter you can pass a function instead of None
):
clean = filter(None, lis)
There is always the itertools approach if you want more efficient looping, but these basic approaches should work for most day to day cases.