jerro:
Code that intentionally
passes finite ranges with different lengths to zip() is probably
pretty rare (code that does it unintentionally may be more
common).
In my code it's sufficiently common.
I have just "grepped" only two usages of
StoppingPolicy.requireSameLength in my code. And one of them is
an artificial need.
One use case for zipping unequal length sequences is to take
adjacent pairs of a sequence, you zip the sequence with itself
minus the first (Python2.6 code):
a = [10, 20, 30, 40]
zip(a, a[1:])
[(10, 20), (20, 30), (30, 40)]
from itertools import izip
list(izip(a, a[1:]))
[(10, 20), (20, 30), (30, 40)]
zip(a, a[1:], a[2:])
[(10, 20, 30), (20, 30, 40)]
This is useful for local averages, or to compute simple local
operations on a sequence.
And even when such code is correct, being explicit about it
would make it clearer.
One problem is that "StoppingPolicy.requireSameLength" is very
long, so putting it in UFCS chains kills too much horizontal
space.
Bye,
bearophile