Sure, that would be the alternative, but it's not a very general solution since you would have to figure out a fill marker that can never be part of the specific iterable.
What's worse is that you're retrieving several elements per iteration, and those different elements may have different properties requiring different markers. For example, in a file every first line might be an arbitrary string, every second a number, every third could optionally be blank, and so on. So I guess, catching the problem early and raising an error right then, is a simpler and clearer solution.
Wolfgang
Indeed, the question is still open. I was talking about the speed penalty of your interim solution. About the selection of a marker, what about a custom class? # None of your data will be this class Marker(): pass # Same as the docs recipes def grouper(n, iterable, fillvalue=None): args = [iter(iterable)] * n return itertools.zip_longest(*args, fillvalue=fillvalue) # And then do something like for t in grouper(3, 'ABCDEFG', Marker): if Marker in t: print('Marker) # or raise ValueError, ... Alfredo