Подтвердить что ты не робот

Генератор Python для вывода всего от другого вызова генератора

У меня есть генератор Python, который может вызвать себя, чтобы получить больше элементов. Это выглядит так:

def gen(list):
    # ...
    if list:
        for x in gen(list[1:]):
            yield x

Мой вопрос касается двух последних строк: есть ли более сжатый способ выразить это? Я надеюсь на что-то вроде этого (понимая, что это неправда Python as-is):

def gen(list):
    # ...
    if list:
        yield each in gen(list[1:])
4b9b3361

Ответ 1

Был вызван некоторый вызов yield from или тому подобное, который "передает" все значения, возвращаемые подгенератором. См. PEP 380 для некоторых идей, которые были отброшены. Однако пока ничего не сделано. Ваш первый пример правильный.

Ответ 2

Ваш образец кода очень идиоматичен и краток, не нужен и не имеет реальных шансов для дальнейших улучшений, и особенно не тогда, когда он приходит к читаемости.

Ответ 3

Ваш первый пример - правильное решение.