[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Do not promote `None` as the first argument to `filter` in documentation.

2018-03-06 16:58 GMT+03:00 Jason Friedman <jsf80238 at gmail.com>:

> as a ordinary Python user I'd be interested in improvements to the
> documentation, including suggestions on real-world usage.

I'm just an ordinary user, just like you :)

> Kirill, taking deprecation/removal off the table, what changes would you
> recommend to the documentation?

My English is about basic level, so you may need to fix the spelling. But I
would write as follows:

filter(function, iterable)
Construct an iterator from those elements of iterable for which function
returns truthy values. iterable may be either a sequence, a container which
supports iteration, or an iterator.

Note that filter(function, iterable) is equivalent to the generator
expression (item for item in iterable if function(item)). In cases when
function corresponds to a simple lambda function a generator expression
should be preferred. For example, when it is necessary to eliminate all
multiples of three (x for x in range(100) if x % 3) should be used, instead
of filter(lambda x: x % 3, range(100))

See itertools.filterfalse() for the complementary function that returns
elements of iterable for which function returns false.

Note: For some historical reasons as the first argument you can use None
instead of function, in this case the identity function is assumed. That
is, all elements of iterable that are false are removed which is equivalent
to (item for item in iterable if item). Currently, for the same purpose the
preferred form is `filter(bool, iterable)`.

maybe _function_ should be changed to _callable_.

With kind regards,