Raymond Hettinger <[email protected]> added the comment:
> I assume you've been recommending this?
Not really, but it does come up and I've seen it in customer code more than
once.
I do show people this:
>>> data = [10.5, 3.27, float('Nan'), 56.1]
>>> list(filter(isfinite, data))
[10.5, 3.27, 56.1]
>>> list(filterfalse(isnan, data))
[10.5, 3.27, 56.1]
The question does arise about how to do this for None using functional
programming. The answer is a bit awkward:
>>> from operator import is_not
>>> from functools import partial
>>> data = [10.5, 3.27, None, 56.1]
>>> list(filter(partial(is_not, None), data))
[10.5, 3.27, 56.1]
>From a teaching point of view, the important part is to show that this code
>does not do what people typically expect:
>>> data = [10.5, 0.0, float('NaN'), 3.27, None, 56.1]
>>> list(filter(None, data))
[10.5, nan, 3.27, 56.1]
FWIW, this issue isn't important to me. Just wanted to note that one of the
idioms no longer works. There are of course other ways to do it.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue35712>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com