Kodrill

Python 3 エンジニア認定実践試験 / Python の言語仕様 ・ 無料問題 3/5

Python の言語仕様 問題3[内包表記とジェネレーター]

次のコードを実行したときの出力を選んでください。

Python
def countdown(n):    while n > 0:        yield n        n -= 1​g = countdown(3)print(next(g), next(g))print(list(g))print(list(g))

選択肢

  • A.3 2 [3, 2, 1] [3, 2, 1]
  • B.3 2 [1] []正解
  • C.3 2 [1] [1]
  • D.3 3 [3, 2, 1] []

解説実行して確認済み

ジェネレーターは yield のたびに値を返して一時停止し、次の要求で続きから再開します。next(g) を 2 回呼ぶと 3 と 2 が取り出され、list(g) は残りの [1] になります。一度最後まで進んだジェネレーターは空になるので、もう一度 list(g) すると [] です。

この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。

「Python の言語仕様」の要点を解説記事で読む

「Python の言語仕様」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。