Existe uma maneira em python para alterar a ordem em que o rendimento de get é processado? [duplicado

Esta pergunta já tem uma resposta aqui:

Primeira versão em largura do itertools.chain () 2 respostas

Se eu fizer

def foo():
    yield from range(0,10)
    yield from range(10,20)

for num in foo():
    print(num)

Eu recebo uma lista ordenada de 0 a 19. Sem alterar a entrada das funções de intervalo, existe uma maneira fácil de especificar que eu quero uma lista que seja: 0,10,1,11,2,12 ...

Basicamente, primeiro quero o primeiro elemento de cada gerador. Então, eu quero o segundo elemento de cada gerador e depois o terceiro e assim por diant

Pontos de bônus: Existe uma maneira de alterá-lo para que, quando os geradores produzam uma quantidade desigual de resultados, o segundo gerador produz o restante de seus resultados após o término do primeir

questionAnswers(1)

yourAnswerToTheQuestion