2011-08-10 5 views
0

Pythonでリストまたはジェネレータを反復処理するかどうかを判断する方法はありますか?forループがリストまたはジェネレータを反復処理するかどうかを判断する

for i in range(10): 
    print some_param  # will identify as a list 

for i in xrange(10): 
    print some_param  # will identify as a generator 
+2

私は興味があります:あなたはその情報をどうしますか? –

+0

Ah。私は実際には、反復アイテムがリストかジェネレータかどうかを判断しようとしています。 'for line in file'がファイル全体をメモリに読み込むのか、次の改行文字を先読みするのか不思議でした。 –

+0

'file.readline'はいくつかのバッファリングを行いますが、確かにファイル全体を読み取るわけではありません。 –

答えて

6

一般に、 isinstance(my_iterable, type(iter(xrange(1))))isinstance(my_iterable, type(iter([])))のような不愉快なことをすることができますが、裸のイテレーター・インターフェースでは、ジェネレーターとリストはクライアントにとって見分けがつきません。