Does Python need a semantics for and/or over generators ? was : 'xor' operator?
Andrae Muys
amuys at shortech.com.au
Mon Apr 15 20:08:36 EDT 2002
Boris Borcic <borcis at geneva-link.ch> wrote in message news:<3CBABA71.3040909 at geneva-link.ch>...
> Indeed, shouldn't two generators g1 and g2, when combined
> in an expression of the form e.g. "g1 and g2" or "g1 or g2",
> combine meaningfully to become a third generator ? Respectively
> one that returns a successive value of g2 for every value that
> g1 returns, until one of them returns IterationError,
Ahh you would mean
[yield elem for tupl in xzip(g1, g2) for elem in tupl]
> and one
> that concatenates the values of g1 with the values of g2 ?
[yield elem for tupl in (g1, g2) for elem in tupl]
I personally don't see these as being natural applications of and/or
to lists.
As far as concatenation is concerned, I remain a little surprised that
'+' isn't defined for generators, after all it is for lists and has a
well defined semantic that is obvious. I have always found the
absense of a multiply method on lists strange, I personally would have
expected it to perform a cartesian product. Still it's easy enough to
do long hand, so it doesn't really bother me, especially given the
non-intuitive ordering required if you want to handle infintate
generators at all gracefully.
Andrae Muys
More information about the Python-list
mailing list