반응형
생성기를 통해 반복하는 방법
생성기를 통해 어떻게 루프를 돌릴 수 있습니까? 나는 이런 식으로 생각했습니다.
gen = function_that_returns_a_generator(param1, param2)
if gen: # in case the generator is null
while True:
try:
print gen.next()
except StopIteration:
break
더 비단뱀적인 방법이 있습니까?
간단히
for x in gen:
# whatever
트릭을 할 것입니다. 그 참고 if gen
항상 돌아갑니다 True
.
for item in function_that_returns_a_generator(param1, param2):
print item
반환 된 것이없는 것처럼 루프에 들어 가지 않는 것처럼 함수에서 반환되는 것이 있는지 확인하기 위해 테스트에 대해 걱정할 필요가 없습니다.
부작용에만 신경을 써서 생성기의 출력이 필요하지 않은 경우 다음 한 줄을 사용할 수 있습니다.
for _ in gen: pass
다른 반복 가능한 것처럼 처리하십시오.
for val in function_that_returns_a_generator(p1, p2):
print val
참고 if gen:
항상 진정한 될 것입니다, 그래서 그것은 거짓 테스트입니다
간단히 반복 할 수 있습니다.
>>> gen = (i for i in range(1, 4))
>>> for i in gen: print i
1
2
3
그러나 한 번만 반복 할 수 있습니다. 다음 번에는 생성기가 비어 있습니다.
>>> for i in gen: print i
>>>
생성기를 통해 수동으로 이동하려면 (즉, 각 루프를 수동으로 작업하기 위해) 다음과 같이 할 수 있습니다.
from pdb import set_trace
for x in gen:
set_trace()
#do whatever you want with x at the command prompt
#use pdb commands to step through each loop of the generator e.g., >>c #continue
참고 URL : https://stackoverflow.com/questions/11539194/how-to-loop-through-a-generator
반응형
'Programing' 카테고리의 다른 글
여러 Git 커밋 (이미 푸시 됨)을 게시 된 저장소로 되돌리려면 어떻게해야합니까? (0) | 2020.11.20 |
---|---|
postgresql에서 배열의 크기를 찾는 방법 (0) | 2020.11.20 |
jQuery는 붙여 넣기 이벤트에 바인딩, 붙여 넣기의 내용을 가져 오는 방법 (0) | 2020.11.20 |
요소 외부 클릭 감지 (바닐라 자바 스크립트) (0) | 2020.11.20 |
일련의 자동화 된 테스트에 대해 setUp을 한 번만 실행 (0) | 2020.11.20 |