0
def print_list(l):
    for item in l:
        if isinstance(item, list):
            print_list(item)
        else:
            print(item)

私は再帰を使用してリストを適切に印刷するこの関数を作成しましたが、私の質問は、[[1, 2, 3], 4]表示後に終了する必要があるように引数を与えると、 34つの値すべてが適切に表示されますが、その理由は何ですか?誰かが私を啓発できますか? .

4

3 に答える 3

0

あなたの機能を試してみると、

1
2
3
4

出力として。関数は最初に再帰に入り、 をループするため、これはまさに期待どおりです[1, 2, 3]。これはに出力1され3ます。次に、再帰が終了し、元の呼び出しに戻ります。これにより、外側のリストの 2 番目の要素である が出力され4ます。

于 2013-04-02T11:09:06.173 に答える
0

プログラムが 3 時に終了すると予想するのはなぜですか? 再帰が数字の 3 の出力で停止すると言うのは正しいですが、現時点では元のリストはまだ完全には処理されていません。プログラムのステップを書き留めると、次のようになります。

  • iterable [[1, 2, 3], 4] 内のすべての要素を反復する
  • 最初の項目 [1, 2, 3] はリストですか? -> はい
  • 最初の項目で print_list を呼び出す
    • [1, 2, 3] のすべてのアイテムを反復処理します
    • 最初の項目 1 はリストですか? -> いいえ
    • 印刷 1
    • 2番目の項目2はリストですか? -> いいえ
    • 印刷 2
    • 3 番目の項目 3 はリストですか? -> いいえ
    • プリント 3
    • リストの最後に到達したため、戻る
  • 2番目の項目4はリストですか? -> いいえ
  • 印刷 4
于 2013-04-02T11:13:32.033 に答える