← クエスト一覧

クエスト83:ジェネレータ式を使おう

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 83 / 85

クエスト83:ジェネレータ式を使おう

発展 +10 XP
🏠
今回の課題
1〜10 の二乗のジェネレータ式を作って、sum() でその合計 385 を表示しよう。
📖 解説を見る
💧 ジェネレータ式って何?

リスト内包表記(Q20)の [ ]( ) に変えたものです。値を全部いっぺんに作らず、必要になったときに1つずつ生成します(省メモリ)。

✏️ 書き方:
gen = (w.upper() for w in ['a', 'b'])
print(list(gen))
 → ['A', 'B']
リスト内包表記なら [ … ]、ジェネレータ式なら ( … )囲むカッコが違うだけで、中身の書き方は同じです。

📋 作るもの:
・1〜10(range(1, 11))の各数の二乗を出すジェネレータ式を作り、gen に入れる
[ ] ではなく ( ) で囲むこと
・2乗は ** で計算できる
下の sum(gen) は書いてあるので、385 と出ればOK

💡 どこで使う?

sum() / max() / any() などに直接渡して集計するときに便利です。[ ] だと全要素をメモリに並べますが、( ) なら1つずつ流すので、巨大なデータの合計も少ないメモリで計算できます。

⚠️ ポイント:
( ) で囲むとジェネレータ式
x**2 は x の2乗
ヒントを見る
リスト内包表記の [ ] を ( ) に変えるだけだよ。式のところに「2乗」の計算を書こう。
期待する出力
385
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: 1〜100の偶数のジェネレータを作って len(list()) で個数を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
50
未挑戦

問題 2: ['hello', 'world', 'python'] の各単語を大文字にするジェネレータを作って list() で表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
['HELLO', 'WORLD', 'PYTHON']
未挑戦

問題 3: ジェネレータ式で 1〜20 の3の倍数の合計を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
63
コピーしました!