[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
--
Steve
More information about the Python-ideas
mailing list