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_ 関数があり、リストで反復を使用できることを示しています。