Pythonイテラブル完全解説 – 日本一わかりやすい入門ガイド
イテラブルとは?基本概念を図解で理解
**イテラブル(Iterable)**とは、Pythonで「繰り返し処理できるオブジェクト」のことです。for文で要素を一つずつ取り出せるものは全てイテラブルです。
身近なイテラブルの例
# リスト、タプル、文字列は全てイテラブル
for item in [1, 2, 3]: # リスト
print(item)
for char in "hello": # 文字列
print(char)
for num in (10, 20, 30): # タプル
print(num)
イテラブルの種類と特徴
1. 基本的なイテラブル
| 種類 | 例 | 特徴 |
|---|---|---|
| リスト | [1, 2, 3] | 変更可能、順序あり |
| タプル | (1, 2, 3) | 変更不可、順序あり |
| 文字列 | "hello" | 変更不可、文字の集合 |
| 辞書 | {"a": 1} | キーで繰り返し |
| セット | {1, 2, 3} | 重複なし、順序なし |
2. 特殊なイテラブル
# range: 数値の範囲を表現
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# enumerate: インデックス付きで繰り返し
fruits = ["apple", "banana", "orange"]
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
イテラブルかどうかを判定する方法
# hasattr関数で__iter__メソッドの存在を確認
def is_iterable(obj):
return hasattr(obj, '__iter__')
print(is_iterable([1, 2, 3])) # True
print(is_iterable("hello")) # True
print(is_iterable(123)) # False
イテレータとの違い
イテラブルは「繰り返せるもの」、イテレータは「実際に繰り返しを実行するもの」です。
# イテラブルからイテレータを作成
my_list = [1, 2, 3] # イテラブル
my_iterator = iter(my_list) # イテレータ
print(next(my_iterator)) # 1
print(next(my_iterator)) # 2
print(next(my_iterator)) # 3
実践的な使用例
1. リスト内包表記との組み合わせ
# 偶数のみを抽出
numbers = [1, 2, 3, 4, 5, 6]
evens = [n for n in numbers if n % 2 == 0]
print(evens) # [2, 4, 6]
2. 複数のイテラブルを同時処理
# zip関数で複数のイテラブルを並行処理
names = ["太郎", "花子", "次郎"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name}さんは{age}歳です")
3. カスタムイテラブルの作成
class Countdown:
def __init__(self, start):
self.start = start
def __iter__(self):
return self
def __next__(self):
if self.start <= 0:
raise StopIteration
self.start -= 1
return self.start + 1
# 使用例
for num in Countdown(3):
print(num) # 3, 2, 1
よくある間違いと対処法
1. 数値をfor文で使おうとするエラー
# ❌ 間違い
# for i in 5: # TypeError
# ✅ 正解
for i in range(5):
print(i)
2. イテレータの使い切り
my_iter = iter([1, 2, 3])
list(my_iter) # [1, 2, 3]
list(my_iter) # [] 空になる
# 再利用するには新しいイテレータを作成
my_iter = iter([1, 2, 3])
パフォーマンスを考慮した使い方
ジェネレータ式でメモリ効率化
# リスト内包表記(メモリを多く使用)
squares_list = [x**2 for x in range(1000000)]
# ジェネレータ式(メモリ効率的)
squares_gen = (x**2 for x in range(1000000))
# 必要な時だけ値を生成
for square in squares_gen:
if square > 100:
break
まとめ
イテラブルのポイント
- for文で繰り返し処理できるオブジェクト
- リスト、文字列、辞書など多くの型がイテラブル
__iter__メソッドを持つオブジェクト- メモリ効率的な処理にはジェネレータを活用
イテラブルを理解することで、Pythonでのデータ処理が格段に効率的になります。まずは基本的な使い方から始めて、段階的に応用的な使い方を身につけていきましょう。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


