TypeError: ‘int’ object is not iterableの対処法

講師
講師

Python初心者が直面するエラーの1つに、TypeError: ‘int’ object is not iterableがあります。
本記事では、このエラーが発生する原因と、解決策について解説します。

 

TypeError: ‘int’ object is not iterableが発生する原因

このエラーが発生するサンプルコードを見てみましょう。

number = 100
for x in number:
    print(x)

このサンプルコードでは、numberというint型の変数をfor文で処理しようとしています。

ここでfor文の性質を確認しましょう。

Pythonのfor文は、例えばリストやタプルなどのイテラブル(iterable)なオブジェクトの要素を順に取り出し処理を行います。イテラブル(iterable)とは、英語で「反復可能」「繰り返し可能な」という意味で、Pythonではリスト、タプル、集合、辞書、文字列、rangeなどを指します。

つまり、for文で処理できるのは、これらイテラブルなオブジェクトのみということになります。

 

イテラブルオブジェクトと、そうでないオブジェクトを表にまとめましたので、参照ください。

イテラブルイテラブルではない
リスト数値(int,floatなど)
タプル真偽値 (boolean)
集合
辞書
文字列
range
file object

 

では、サンプルコードに戻って確認してみましょう。

number = 100
for x in number:
    print(x)

サンプルコードでは、イテラブルでないint型の変数numberをfor文で処理しようとしています。そのため、TypeError: ‘int’ object is not iterable、つまり「int型のオブジェクトはイテラブルでない」というエラーが発生するのです。

 

TypeError: ‘int’ object is not iterableの解決方法

解決方法として、イテラブルオブジェクトをfor文に渡してあげることが考えられます。
サンプルコードの解決方法をいくつかご紹介します。

 

  • rangeを使う

変数numberに格納している100を、rangeを使ってfor文で回す方法です。

for x in range(1, 101):
  print(x)

出力結果:

1
2
3
:
99
100

  • listを使う

1から100までの数値を、リストに格納する方法です。

import numpy as np

list = list(np.arange(1, 101))
for x in list:
    print(x)

出力結果:

1
2
3
:
99
100

講師
講師

今回はint型をfor文に渡してしまった例をご紹介しましたが、例えばTypeError: ‘float’ object is not iterableなどが出た際には、イテラブルでない値を渡していないか確認しましょう。


Startlabのプログラミング入門コースは、Python未経験者・初学者にもわかりやすいカリキュラムと続けやすいサポート体制が魅力。自分の学習目的に合っているか、どういった知識を身に付けることができるのかなど、無料カウンセリングでぜひご相談ください!カウンセリングは毎日実施中、お待ちしております!

無料カウンセリングを予約する