3 ms·
def myzip(*seqs): next_yield = [None] * len(seqs) its = [iter(seq) for seq in seqs] should_go = True while should_go:
by Joker_vD 4y ago
def myzip(*seqs):
next_yield = [None] * len(seqs)
its = [iter(seq) for seq in seqs]
should_go = True
while should_go:
for index, it in enumerate(its):
try:
next_yield[index] = next(it)
except StopIteration:
should_go = False
if should_go:
yield tuple(next_yield)
It consumes exactly the same number of elements from all sequences, unless a non-StopIteration exception occurs during the iteration.