← クエスト一覧

クエスト51:functools.reduceを使おう

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

クエスト51:functools.reduceを使おう

発展 +10 XP
🏠
今回の課題
[1, 2, 3, 4, 5] の積(全部かけた値)120 を reduce で計算して表示しよう。
📖 解説を見る
➗ reduce って何?

reduce は、リストを左から順に2つずつまとめていって、最後に1つの値にします。

✏️ 書き方:
from functools import reduce
reduce(lambda a, b: a + b, [1, 2, 3, 4])
 → 10(合計)
内部では ((1+2)+3)+4 のように、結果を次の計算にわたしていきます。

📋 作るもの:
reduce に「2つの値をかけ算してまとめる lambda」と nums をわたす
・上の例は足し算だったので、同じ形で計算の中身だけ変える
・結果を result に入れる(下の print がこの名前を使う)
[1, 2, 3, 4, 5] なら 1×2×3×4×5 = 120

💡 どこで使う?

sum()max() をもっと一般化した「畳み込み」の道具です。合計・積・最大はもちろん、「2つをまとめるルール」を自分で決めれば、累積的な計算をなんでも表現できます。

⚠️ ポイント:
lambda a, b: ... の a が「これまでの結果」、b が「次の要素」
reduce を使うには from functools import reduce が必要(もう書いてあるよ)
ヒントを見る
reduce(2つをまとめる関数, リスト) の形だよ。上の例は足し算だったので、同じ形で計算だけ変えよう。a が「ここまでの結果」、b が「次の要素」。
期待する出力
120
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

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

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

未挑戦

問題 1: reduce で [1, 2, 3, 4, 5] の合計を計算して表示しよう!

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

問題 2: reduce で [3, 7, 2, 9, 1] の最大値を求めて表示しよう!

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

問題 3: reduce で ['P', 'y', 't', 'h', 'o', 'n'] を結合して 'Python' と表示しよう!

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