Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 組み込みイテレータの使用 | Python Iterators
Pythonにおける関数型プログラミングの概念

book組み込みイテレータの使用

メニューを表示するにはスワイプしてください

Python には、コレクションを表現力豊かかつメモリ効率よく処理できる複数の組み込みイテレータが用意されています。最もよく使われるものとして、enumeratezipmap の3つがあります。

  • enumerate は、シーケンスをループ処理しながら各要素のインデックスと値の両方を追跡できます。
  • zip は、複数のシーケンスを並行してイテレートし、要素同士をペアにします。
  • map は高階関数であり、以前にデータへ処理を適用するために使った概念です。ここではイテレータプロトコルの観点から再度取り上げます。単なるリスト処理の手段としてではなく、必要に応じて結果を生成する特殊なオブジェクトとして捉えることで、map を静的な関数型ツールから動的かつメモリ効率の高いストリームとして理解し直します。

これらのイテレータは、並行リストの処理やデータ変換、簡潔なループ記述などに不可欠です。動画で示したように、適切に使うことでコードが簡潔になり、特に大規模または複雑なデータセットを扱う際のエラーも減らせます。

123456
# Using enumerate and zip to process two lists in parallel names = ["Alice", "Bob", "Charlie"] scores = [85, 92, 78] for idx, (name, score) in enumerate(zip(names, scores), start=1): print(f"{idx}. {name} scored {score}")
copy

このコードでは、zip(names, scores) により各名前と対応するスコアがペアとなり、("Alice", 85) のようなタプルのイテレータが生成されます。これを enumerate でラップすることで、1から始まるカウンタが追加され、各イテレーションでインデックス、名前、スコアが得られます。ループ内では、リスト内での位置を先頭に付けて各生徒の名前とスコアを出力します。この方法は簡潔かつ可読性が高く、組み込みイテレータが複数のシーケンス処理をどれだけ効率化できるかを示しています。

question mark

このコードサンプルでenumeratezipを一緒に使う主な目的は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  1
some-alt