2014-01-22 2 views
3

list_iterator를 두 번 반복하고 싶습니다. 현재이 작업을 수행하려고하면 이터레이터는 두 번째 반복 할 내용이 없습니다. 재설정 할 수 있습니까? list_iterator를 두 번 반복하십시오.

l = iter(["1","2","3","4"]) 

for i in l: 
    print(i) 

for i in l: 
    print(i) 

list_iter 객체

내가 두 번 반복하고자하는 함수에 전달되고있다. 그것은 나쁜 practive이 list_iterator 개체 주위에 전달할 수 있나요?

+1

그것은 목록 자체를 전달하는 것이 낫다는 필요 반복자를 만들 수 없습니다. –

+1

반복자는 "use and throw"유형의 객체입니다. – thefourtheye

+0

"list_iterator 객체를 전달하는 것은 실용적이지 않습니까?" - 내 경험에 따르면 혼란을 야기 할 수있는 일은 한 번만 반복 할 수 있습니다 (생성자 및 파일 객체 일지라도 수신자에게는 수신자에게 분명하지 않음). 함수는 입력을 여러 번 반복 할 수 있어야하는지, 출력을 여러 번 반복 할 수 있는지 여부를 문서화해야합니다. 예를 들어'yield '를 가진 함수는 한번만 반복 될 수있는 것을 반환합니다. 그 일이 언제 일어 났는지 알면됩니다. –

답변

2

항상 itertools.tee을 사용하여 copies의 반복 가능을 얻을 수 있습니다.

알라

l = iter(["1","2","3","4"]) 
# Don't use original.... 
original, new = tee(l)