On 2018-05-06 18:32, Tim Peters wrote:
In a different thread I noted that I sometimes want to write code like this:
while any(n % p == 0 for p in small_primes):
# divide p out - but what's p?
But generator expressions hide the value of `p` that succeeded, so I
can't. `any()` and `all()` can't address this themselves - they
merely work with an iterable of objects to evaluate for truthiness,
and know nothing about how they're computed. If you want to identify
a witness (for `any()` succeeding) or a counterexample (for `all()`
failing), you need to write a workalike loop by hand.
I agree that is a limitation, and I see from a later message in the
thread that Guido finds it compelling, but personally I don't find that
that particular case such a showstopper that it would tip the scales for
me either way. If you have to write the workalike look that iterates
and returns the missing value, so be it. That's not a big deal.
"Do not follow where the path may lead. Go, instead, where there is no
path, and leave a trail."
Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/