Python: オブジェクトがイテラブルかどうかを判定する方法

PYTHON3 チュートリアル

Pythonにおけるイテラブルの判定方法

Pythonにおいて、オブジェクトがイテラブルかどうかを判定することは、多くのプログラミングシナリオで重要です。イテラブルとは、メンバーを一つずつ返すことができるオブジェクトで、forループなどで使用できます。ここでは、主に`iter()`関数と`isinstance()`関数を使用してオブジェクトのイテラビリティをチェックする方法を紹介します。

`iter()`関数を使用する方法

`iter()`関数は、引数として渡されたオブジェクトがイテラブルであればそのイテレータを返し、そうでなければ`TypeError`を発生させます。この特性を利用して、オブジェクトのイテラビリティをテストすることができます。

def is_iterable(obj):
    try:
        iter(obj)
        return True
    except TypeError:
        return False

# リストはイテラブル
print(is_iterable([1, 2, 3]))  # 出力: True

# 整数はイテラブルではない
print(is_iterable(42))  # 出力: False

`isinstance()`関数を使用する方法

`isinstance()`関数を用いて、オブジェクトが`collections.abc.Iterable`から派生しているかどうかをチェックすることもできます。これにより、オブジェクトが公式にイテラブルであるかを確認できます。

from collections.abc import Iterable

def is_iterable(obj):
    return isinstance(obj, Iterable)

# リストはイテラブル
print(is_iterable([1, 2, 3]))  # 出力: True

# 整数はイテラブルではない
print(is_iterable(42))  # 出力: False

カスタムオブジェクトでのイテラビリティテスト

カスタムクラスを定義して、そのインスタンスがイテラブルかどうかを`iter()`と`isinstance()`を使用して確認することも可能です。以下にその例を示します。

class MyIterable:
    def __init__(self, data):
        self.data = data
    def __iter__(self):
        return iter(self.data)

# カスタムクラスのインスタンス
my_iterable = MyIterable([1, 2, 3])

# iter()を使用してテスト
print(is_iterable(my_iterable))  # 出力: True

# isinstance()を使用してテスト
print(isinstance(my_iterable, Iterable))  # 出力: True

このように、`iter()`や`isinstance()`を使用することで、Pythonのあらゆるオブジェクトがイテラブルかどうかを簡単にチェックできます。これにより、エラーを防ぎながら効率的なコードを書くことが可能になります。

購読
通知
0 Comments
Inline Feedbacks
View all comments