Programing

생성기를 통해 반복하는 방법

lottogame 2020. 11. 20. 08:24
반응형

생성기를 통해 반복하는 방법


생성기를 통해 어떻게 루프를 돌릴 수 있습니까? 나는 이런 식으로 생각했습니다.

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

반응형