Last Updated on 2025年7月28日
概要
Pythonで繰り返し処理(ループ)や内包表記などを使用している際に、
TypeError: 'int' object is not iterable
というエラーに遭遇することがあります。
このエラーは「整数(int型)には繰り返し処理ができない」という内容で、特に for文や list内包表記の使い方を誤ったときに発生しやすいです。
本記事では、このエラーの意味と原因、対処方法について解説します。
目次
エラー内容
次のようなコードを実行すると、エラーが発生します。
|
1 2 3 4 |
value = 5 for v in value: print(v) |
このコードを実行すると、以下のようなエラーが出力されます。
|
1 2 3 4 5 |
Traceback (most recent call last): File "main.py", line 2, in <module> for v in value: TypeError: 'int' object is not iterable |
これは、「整数型(int)の変数 value を for文で繰り返そうとしたけど、それはできない」という意味です。
原因
このエラーが起きる主な原因は、「整数型はイテレータではない」ことにあります。
for文などで使用するには、リストや文字列のような イテラブル(繰り返し可能なオブジェクト) である必要があります。
以下のようなミスもよく見られます。
|
1 2 3 4 5 |
# 誤:リストを繰り返すつもりが、int型のまま nums = 10 for n in nums: print(n) |
また、range関数を使わずに int 値だけをループしようとしてしまう例もあります。
|
1 2 3 4 5 |
# 誤った使い方 count = 3 for i in count: print(i) |
対処法
対処法としては、整数をそのまま for文で使うのではなく、range()関数を使って繰り返し可能なオブジェクトに変換する必要があります。
|
1 2 3 4 5 |
# 正しい使い方:rangeを使用 value = 5 for v in range(value): print(v) |
また、複数の値を繰り返したい場合はリストなどを使いましょう。
|
1 2 3 4 5 |
# リストを使った例 values = [1, 2, 3, 4, 5] for v in values: print(v) |
補足:似たエラーとの違い
- TypeError: 'NoneType' object is not iterable
→Noneを for文で回そうとしたときに発生 - TypeError: 'int' object is not subscriptable
→ 整数に対して[]を使ってアクセスしようとしたときに出る
これらのエラーも「データ型の扱いのミス」が原因である点で共通しています。データの型が何かを確認しながらコードを書くことが大切です。
まとめ
TypeError: 'int' object is not iterable は、整数を for文で繰り返そうとしたときに発生するエラーです。
整数はイテラブルではないため、繰り返し処理を行いたい場合は range() を使う必要があります。
このエラーを回避するには、for文で扱う変数がリスト・文字列・rangeなどの「繰り返せる型」になっているか を確認することがポイントです。


