Konwersja instrukcji „yield from” na kod Pythona 2.7

Miałem poniżej kod w Pythonie 3.2 i chciałem go uruchomić w Pythonie 2.7. Konwertowałem go (wprowadziłem kodmissing_elements w obu wersjach), ale nie jestem pewien, czy jest to najbardziej skuteczny sposób. Zasadniczo co się stanie, jeśli są dwayield from połączenia jak poniżej w górnej połowie i dolnej połowie wmissing_element funkcjonować? Czy wpisy z dwóch połówek (górnej i dolnej) są dołączone do siebie na jednej liście, tak że macierzysta rekursja działa zyield from zadzwonić i wykorzystać obie połówki razem?

def missing_elements(L, start, end):  # Python 3.2
    if end - start <= 1: 
        if L[end] - L[start] > 1:
            yield from range(L[start] + 1, L[end])
        return

index = start + (end - start) // 2

# is the lower half consecutive?
consecutive_low =  L[index] == L[start] + (index - start)
if not consecutive_low:
    yield from missing_elements(L, start, index)

# is the upper part consecutive?
consecutive_high =  L[index] == L[end] - (end - index)
if not consecutive_high:
    yield from missing_elements(L, index, end)

def main():
    L = [10, 11, 13, 14, 15, 16, 17, 18, 20]
    print(list(missing_elements(L, 0, len(L)-1)))
    L = range(10, 21)
    print(list(missing_elements(L, 0, len(L)-1)))

def missing_elements(L, start, end):  # Python 2.7
    return_list = []                
    if end - start <= 1: 
        if L[end] - L[start] > 1:
            return range(L[start] + 1, L[end])

    index = start + (end - start) // 2

    # is the lower half consecutive?
    consecutive_low =  L[index] == L[start] + (index - start)
    if not consecutive_low:
        return_list.append(missing_elements(L, start, index))

    # is the upper part consecutive?
    consecutive_high =  L[index] == L[end] - (end - index)
    if not consecutive_high:
        return_list.append(missing_elements(L, index, end))
    return return_list

questionAnswers(6)

yourAnswerToTheQuestion