def interleave(*args):
    iters = map(iter, args)
while iters:
    it = random.choice(iters)
try:
    yield next(it)
except StopIteration:
    iters.remove(it)
Случайное чередование нескольких итераций при сохранении их порядка в python