【Python 基礎】イテラブルとイテレータについてわかりやすく解説

広告この記事には広告・アフィリエイトリンクが含まれる場合があります。
目次
今回は、初心者がつまずきやすいポイントのイテラブルとイテレータについて、解説します。
本記事では、サンプルコードを交えて、実務で役立つ使い方を説明していきたいと思います。
はじめに、イテラブルとイテレータは、ひとことでいうと以下の通りです。
目的 | 講座名 | 到達点 | レベル/前提 | 想定時間 | こんな人に | 評価 |
|---|---|---|---|---|---|---|
現場志向でPython×DSを通しで習得 | Python基礎〜NumPy/Pandas/ | 初心者〜初級(Mac推奨/軽いプログラミング経験があると◎) | 24時間 | Pythonの基礎固めは完了し、ステップアップをしたいかた | | |
広く一式を“ブートキャンプ”形式で学ぶ | 統計・Python(Numpy/Pandas)〜機械学習(scikit-learn/TensorFlow)・可視化・Tableauまで網羅 | 初心者OK | 26時間 | データサイエンスとは何をする職業なのか知りたいかた | | |
AI/機械学習の入門(Colab対応・数学やさしめ) | Python基礎+機械学習の基本(文字認識・株価分析などの小プロジェクト)をColabで体験 | 超初心者〜初級(中学数学レベルで可) | 10時間 | 手を動かしてAIを学習したいかた | |
イテラブルとは
イテラブル(Iterable)は、要素に順番があり、1つずつアクセス可能なオブジェクトです。
イテラブルオブジェクトには、リスト(List)、タプル(Tuple)、文字列(String)、辞書(Dictionary)、集合(Set)などがあります。
以下は、イテラブルのコードです。
# リストのイテラブル
my_list = [1, 2, 3, 4, 5]
for item in my_list:
print(item) # リストの要素を1つずつ表示
# 文字列のイテラブル
my_string = "Hello"
for char in my_string:
print(char) # 1文字ずつ表示
# 辞書のイテラブル
my_dict = {"name": "Bob", "age": 18, "country": "Japan"}
for key, value in my_dict.items():
print(key, value) # キーとバリューを表示- 出力結果
1
2
3
4
5
H
e
l
l
o
name Bob
age 18
country Japanfor文により、要素1つずつアクセスできることがわかります。
イテレータとは

逐次的にアクセス可能なオブジェクトです。
イテレータは、iter()関数を使用してイテラブルオブジェクトから生成されます。
生成したイテレータは、next()関数 で呼び出します。
コードを見たほうがイメージがつくと思います。
my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list) # イテラブルからイテレータを生成
print(next(my_iterator)) # 1つ目の要素を出力
print(next(my_iterator)) # 2つ目の要素を出力
print(next(my_iterator)) # 3つ目の要素を出力
print(next(my_iterator)) # 4つ目の要素を出力
print(next(my_iterator)) # 5つ目の要素を出力
# 定義した要素数以上を呼び出す
print(next(my_iterator)) # 6つ目の要素を出力実行結果
1
2
3
4
5
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
9
10 # 定義した要素数以上を呼び出す
---> 11 print(next(my_iterator)) # 6つ目の要素を出力
StopIteration:リストの要素をnext()関数 で1つずつ呼び出しています。
まとめ
今回はPython初学者がつまずきやすい、「イテラブル」と「イテレータ」について解説しました。
イテラブル(Iterable):反復可能な入れ物
リスト、タプル、辞書など
イテレータ(Iterator):next()でイテラブルから要素を1つずつ返す
これまで読んでくださりありがとうございます。





コメント
コメントはまだありません