[Python-Dev] itertools predicates

Terry Reedy tjreedy at udel.edu
Wed Nov 2 19:59:40 EDT 2016


On 11/2/2016 6:03 PM, Francisco Couzo wrote:
> Some functions that take a predicate from itertools accept None as its
> predicate:
>
>>>> list(itertools.filterfalse(None, range(10)))
> [0]
>>>> list(itertools.groupby([0,0,1,1], None))
> [(0, <itertools._grouper object at 0x7fedc2047198>), (1,
> <itertools._grouper object at 0x7fedc2
> 0471d0>)]
>
> While others don't:
>
>>>> list(itertools.dropwhile(None, range(10)))
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> TypeError: 'NoneType' object is not callable
>
> I'd be interested in writing a patch to make itertools more consistent
> if there's a consensus.
>
> I see two possible solutions:
>
>   * Either remove None as a predicate parameter, which would not be
>     backwards compatible.
>   * Or make the functions that don't accept None start accepting it.

I think you should post this as an enhancement proposal on the tracker. 
Put Raymond Hettinger, the itertools originator and maintainer, as nosy.


-- 
Terry Jan Reedy



More information about the Python-Dev mailing list