2011-08-10 3 views
0

파이썬에서 목록 또는 생성기를 반복하는지 여부를 판단하는 방법이 있습니까?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([])))과 같은 불쾌한 일을 할 수 있지만 베어러 이터레이터 인터페이스를 사용하면 생성자와 목록을 클라이언트와 구별 할 수 없습니다.

관련 문제