[Python-ideas] Add "default" kwarg to list.pop()

Steven D'Aprano steve at pearwood.info
Tue Oct 30 21:08:51 EDT 2018

On Wed, Oct 31, 2018 at 02:25:25AM +0200, Serhiy Storchaka wrote:
> 31.10.18 01:44, Giampaolo Rodola' пише:
> >Sorry in advance if this has been proposed in the past but I couldn't 
> >find anything on python-ideas:
> >
> > >>> l = []
> > >>> l.pop(default=1)
> >1

> It is just
>     l.pop() if l else default

It might *do* the same thing, but it doesn't communicate the 
programmer's intention as well.

{}.pop('key', default) could be written using LBYL too, but the 
intention is much clearer given an explicit default argument.

The only advantage of the "if l" version is that if the default is 
expensive to calculate, we can short-circuit it.

> or
>     (l or [default]).pop()

That's clever, but it is also wasteful, building a single-item list only 
to immediately pop the item out of it and throw the list away.

[steve at ando ~]$ python3.5 -m timeit -s "l = []" "l.pop() if l else None"
10000000 loops, best of 3: 0.0739 usec per loop

[steve at ando ~]$ python3.5 -m timeit -s "l = []" "(l or [None]).pop()"
1000000 loops, best of 3: 0.421 usec per loop


More information about the Python-ideas mailing list