1. ホーム
  2. python

[解決済み] ジェネレータは再帰的か?

2023-02-21 19:38:40

質問

素朴に再帰的なジェネレータを作ろうとしたのですが、うまくいきません。うまくいきませんでした。これは私がしたことです。

def recursive_generator(lis):
    yield lis[0]
    recursive_generator(lis[1:])

for k in recursive_generator([6,3,9,1]):
    print(k)

最初の項目だけ 6 .

このようなコードを動作させる方法はあるのでしょうか?基本的に yield コマンドを再帰的スキームで上のレベルに転送することですか?

どのように解決するのですか?

これを試してみてください。

def recursive_generator(lis):
    yield lis[0]
    yield from recursive_generator(lis[1:])

for k in recursive_generator([6,3,9,1]):
    print(k)

あなたの関数のバグのために、これが動作しないことを指摘しなければなりません。おそらく lis が空でないことを確認する必要があります。

def recursive_generator(lis):
    if lis:
        yield lis[0]
        yield from recursive_generator(lis[1:])

Python 2.7を使用していて、かつ yield from , はこの質問をチェックしてください。