The Cost of Dynamism (was Re: Pyhon 2.x or 3.x, which is faster?)

Jussi Piitulainen jussi.piitulainen at helsinki.fi
Tue Mar 22 09:32:05 EDT 2016


Chris Angelico writes:

> On Wed, Mar 23, 2016 at 12:15 AM, Jussi Piitulainen wrote:
>> Chris Angelico writes:
>>
>>> Or use filter(), which is sometimes clearer:
>>>
>>> # You probably want a more sophisticated function here
>>> def nonspace(ch): return not ch.isspace()
>>>
>>> next(filter(nonspace, stream))
>>
>> Sure.
>>
>> # But there's more fun hiding in the standard library.
>> next(itertools.filterfalse(operator.methodcaller('isspace'), stream))
>
> ... at that point, the genexp is miles ahead in readability :)

;)

> Although I do sometimes yearn for a "filterout" function that does the
> same thing as filter() but negates its predicate. Then you could use:
>
> next(filterout(str.isspace, stream))
>
> to say "give me the next from the stream, filtering out those which
> are spaces". It's not hard to write, of course.

from itertools import filterfalse as filterout

next(filterout(str.isspace, """

     I didn't know str.isspace works like that!

"""))
---> 'I'



More information about the Python-list mailing list