[Python-ideas] Python-ideas Digest, Vol 131, Issue 106
Petr Viktorin
encukou at gmail.com
Tue Oct 31 05:24:41 EDT 2017
On 10/31/2017 09:54 AM, Koos Zevenhoven wrote:
> On Tue, Oct 31, 2017 at 10:01 AM, Chris Angelico <rosuav at gmail.com
> <mailto:rosuav at gmail.com>>wrote:
>
> On Tue, Oct 31, 2017 at 6:46 PM, Steven D'Aprano
> <steve at pearwood.info <mailto:steve at pearwood.info>> wrote:
> > On Tue, Oct 31, 2017 at 06:02:34PM +1100, Chris Angelico wrote:
> >> One small change: If you use next(i) instead of i.next(), your code
> >> should work on both Py2 and Py3. But other than that, I think it's
> >> exactly the same as most people would expect of this function.
> >
> > Not me. As far as I can tell, that's semantically equivalent to:
> >
> > def single(i):
> > result, = i
> > return result
> >
> > apart from slightly different error messages.
>
> I saw the original code as being like the itertools explanatory
> functions - you wouldn't actually USE those functions, but they tell
> you what's going on when you use the simpler, faster, more compact
> form.
>
>
> I wonder if that's more easily understood if you write it along these
> line(s):
>
> (the_bob,) = (name for name in ('bob','fred') if name=='bob')
There are (unfortunately) several ways to do it. I prefer one that
avoids a trailing comma:
[the_bob] = (name for name in ('bob','fred') if name=='bob')
More information about the Python-ideas
mailing list