Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

「PythonのTypeError: 'int' object is not iterableとは何ですか?」繰り返しで使えないオブジェクトを紹介します。

f:id:kenken0326:20200605112945p:plain

質問

TypeError: 'int' object is not iterableというエラーが出てきました。このエラーが出現する理由がわからなかったので、教えてください。

入力した内容(コード)

sample = 1

for x in sample:
    print(x)

出たエラー(実行結果)

Traceback (most recent call last):
  File "typeerror/03.py", line 3, in <module>
    for x in sample:
TypeError: 'int' object is not iterable

回答

TypeError: ... object is not iterable エラーは、繰り返しに使えないオブジェクトを繰り返し処理で使っているというエラーです。
for文のinの中に繰り返すことのできない値(ここでは1という数値)を入れているために表示されます。

補足

for文のinの中にはイテラブル(Iterable)でない数値を指定できません。
イテラブルとは簡単に言うと繰り返し(=for文)に使えるオブジェクトです。

イテラブル(Iterable)とは

要素を一度に1つずつ返せるオブジェクト(反復可能オブジェクト)です。 タプル, list, dict, set, strクラスのオブジェクトはイテラブルです。

詳しい情報はドキュメントをご覧ください。 https://docs.python.org/ja/3/glossary.html#term-iterable

繰り返しに使えるオブジェクトは、複数の値があるので、1つずつ取り出せますね。

例えばリスト、タプルで繰り返し処理をする場合と比較してみましょう。

リストweekの内容を1つずつ表示する時

week = ['月', '火', '水', '木', '金']

for day in week:
    print(day)

for文でタプルの要素を繰り返し処理する時

programming_lang = ('Python 1991', 'Ruby 1995', 'Go 2009')

for lang in programming_lang:
    print(lang, '年生まれ')

どちらも複数の値を持っています。

TypeError: 'int' object is not iterableが出る時にチェックするといい、よくあるミス

TypeError: 'int' object is not iterableが表示された時には下記のことを確認しましょう。

  • 繰り返しに使えないオブジェクト(整数など)を繰り返し処理で使っていないか
  • イテラブルを必要とする関数(例:enumerateなど)に整数を渡しているか

また、 TypeError: 'float' object is not iterableのように、intでない場合も「イテラブルが必要なところにそれ以外のオブジェクトを渡していないだろうか?」と疑ってみましょう。

これでもうTypeError ... object is not iterableというエラーが出てもビックリする必要はありませんね!

Copyright ©2017-2020 BeProud Inc. All rights reserved.