ホームページ >バックエンド開発 >Python チュートリアル >Python でオブジェクトが反復可能かどうかを確実に確認するにはどうすればよいですか?

Python でオブジェクトが反復可能かどうかを確実に確認するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-09 01:31:13428ブラウズ

How Can I Reliably Check if an Object is Iterable in Python?

Python でのオブジェクトの反復可能性の決定

一連の要素の反復処理は、Python の基本的な操作です。オブジェクトが反復をサポートしているかどうかを判断するには、isiterable のような単純なメソッドが存在するかどうか疑問に思うかもしれません。

hasattr(myObj, '__iter__')

質問 hasattr(myObj, '__iter__') は、 __iter__ メソッドが存在するかどうかをチェックします。オブジェクト。ほとんどのシーケンス型では機能しますが、文字列を処理する場合、Python 2 では不十分です。

Iter 組み込み関数

より確実なアプローチは、iter を使用することです。組み込み関数。オブジェクトの __iter__ メソッド、または文字列の場合は __getitem__ メソッドの呼び出しを試行し、より広範囲のイテラブルに適したものにします。

try:
    some_object_iterator = iter(some_object)
except TypeError as te:
    print(some_object, 'is not iterable')

ダック タイピング

もう 1 つの Python 的アプローチは、ダック タイピングを採用することです。これには、オブジェクトが反復可能であると想定し、そうでない場合は例外を処理することが含まれます。 EAFP (Easier to Ask Forgiveness than Permission) スタイルは、これによく使用されます。

try:
    _ = (e for e in my_object)
except TypeError:
    print(my_object, 'is not iterable')

コレクション モジュール

Python コレクション モジュールは、チェックするための抽象基本クラスを提供します。クラスまたはインスタンスの反復可能性のため。ただし、これらのクラスはすべてのケース、特に __getitem__ メソッドによる反復可能ケースをカバーしているわけではありません。

from collections.abc import Iterable

if isinstance(e, Iterable):
    # e is iterable

以上がPython でオブジェクトが反復可能かどうかを確実に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。