ich möchte zwei iterators parallel durchlaufen. Beide sollten im Normalfall gleich lang sein und daher gleichzeitig leer sein. Ich möchte, dass der iterator automatisch einen Fehler ausgibt, wenn beide Subiteratoren nicht gleich lang sind, damit ich das später im Code nicht mehr überprüfen muss.
Ich habe diese Lösung hier gefunden, mit zip_longest aus den itertools:
https://stackoverflow.com/questions/329 ... -in-python
Code: Alles auswählen
from itertools import zip_longest
def zip_equal(*iterables):
sentinel = object()
for combo in zip_longest(*iterables, fillvalue=sentinel):
if any([c is sentinel for c in combo]):
raise ValueError('Iterables have different lengths')
yield combo
Code: Alles auswählen
def zip_equal(*iterables):
for combo in zip_longest(*iterables):
if any([c is None for c in combo]):
raise ValueError('Iterables have different lengths')
yield combo