[Tutor] Regex not working as desired

Albert-Jan Roskam sjeik_appie at hotmail.com
Tue Mar 6 17:17:20 EST 2018


On Feb 27, 2018 09:50, Alan Gauld via Tutor <tutor at python.org> wrote:
>
> On 27/02/18 05:13, Cameron Simpson wrote:
>
> > hard to debug when you do. That's not to say you shouldn't use them, but many
> > people use them for far too much.
>
>
> > Finally, you could also consider not using a regexp for this particular task.
> > Python's "int" class can be called with a string, and will raise an exception
>
> And, as another alternative, you can use all() with a
> generator expression:
>
> >>> all(c.isdigit() for c in '1234')
> True
> >>> all(c.isdigit() for c in '12c4')
> False

I never understood why this is syntactically correct. It's like two parentheses are missing.

This I understand:
all((c.isdigit() for c in '12c4'))
Or this:
all([c.isdigit() for c in '12c4'])
Or this:
all((True, False))

But the way you wrote it, the generator expression just "floats" in between the parentheses that are part of the all() function. Is this something special about all() and any()?


More information about the Tutor mailing list