Поскольку этот вопрос не уточняется;Я предоставлю ответ, который применим в Python> = 3.3
Если вам нужно только вернуть этот список, сделайте, как Anurag предлагает , но если по какой-то причинерассматриваемая функция действительно должна быть генератором, вы можете делегировать другому генератору;Предположим, вы хотите добавить суффикс к списку результатов, но только если список сначала исчерпан.
def foo():
list_ = ['a', 'b', 'c', 'd']
yield from list_
if something:
yield this
yield that
yield something_else
В версиях Python до 3.3, однако, вы не можете использовать этот синтаксис;вам придется использовать код, как в вопросе, с циклом for и одним оператором yield в теле.
В качестве альтернативы;вы можете обернуть генераторы в обычную функцию и вернуть результат chain
ed: это также имеет преимущество работы в python 2 и 3
from itertools import chain
def foo():
list_ = ['a', 'b', 'c', 'd']
def _foo_suffix():
if something:
yield this
yield that
yield something_else
return chain(list_, _foo_suffix())