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爆速講座