HOWTO · Python
Python Int Object Is Not Iterable エラーの修正
'int'オブジェクトを修正する方法は Python で反復可能なエラーではありません
このページの内容
このエラー自体は自明です。 'int' object is not iterable、それは整数で反復を実行できないことを明確に言っています。整数は 1 桁であり、反復可能なリストではありません。いくつかの例を見てみましょう。
Python の 'int' object is not iterable エラーの修正
整数を返すか格納するものはすべて反復可能ではありません。それは常識です。慣れていない場合は、Python での反復について理解しましょう。反復は、整数ではなく、リストに対して実行できます。たとえば、整数に対して反復のループを実行することはできません。それは意味がありません。次のコードを見てください。
# integer
number = 123
# loop over an integer
for i in number:
print(i)
上記のコードを実行すると、回避しようとしているのと同じエラーが発生します。上記のコードでは、number は単一の値 123 を持つ整数です。その上でループを実行することはできません。データ型とそれに関連する機能について混乱している場合は、魔法のメソッドを見つけることで簡単に解決できます。この場合、整数を使用します。見てください。
# integer
number = 123
# built-in / magic methods of an integer
print(dir(number))
上記のコードの出力は次のようになります。
[
"__abs__",
"__add__",
"__and__",
"__class__",
"__cmp__",
"__coerce__",
"__delattr__",
"__div__",
"__divmod__",
"__doc__",
"__float__",
"__floordiv__",
"__format__",
"__getattribute__",
"__getnewargs__",
"__hash__",
"__hex__",
"__index__",
"__init__",
"__int__",
"__invert__",
"__long__",
"__lshift__",
"__mod__",
"__mul__",
"__neg__",
"__new__",
"__nonzero__",
"__oct__",
"__or__",
"__pos__",
"__pow__",
"__radd__",
"__rand__",
"__rdiv__",
"__rdivmod__",
"__reduce__",
"__reduce_ex__",
"__repr__",
"__rfloordiv__",
"__rlshift__",
"__rmod__",
"__rmul__",
"__ror__",
"__rpow__",
"__rrshift__",
"__rshift__",
"__rsub__",
"__rtruediv__",
"__rxor__",
"__setattr__",
"__sizeof__",
"__str__",
"__sub__",
"__subclasshook__",
"__truediv__",
"__trunc__",
"__xor__",
"bit_length",
"conjugate",
"denominator",
"imag",
"numerator",
"real",
]
ご覧のとおり、上記のリストにはイテレータメソッドがありません。リストに関しては、何が違うのか見てみましょう。
# list
lst = [1, 2, 3]
# loop over a list
for j in lst:
print(j)
# built-in /magic methods of a list
print(dir(lst))
上記のコードではエラーは発生しません。リストを反復処理できます。上記のコードを実行すると、その中に _iter_ 関数があり、リストで反復を使用できることを示しています。