2014-02-18 1 views
1

기능 :파이썬에서 for 루프의 함수 내에서 반복 단계를 건너 뛰는 방법은 무엇입니까?

def function_1(value): 
    if value < 5: 
     continue 
    else: 
     print "value: ", value 

루프 : 값인 경우

for value in xrange(10): 
    function_1(value) 

상기 루프 for 년 미만 5 function_1 다른 그 값을 출력한다, 루프 다음 ​​반복으로 건너 뛸 수 있도록한다. 위의 루프 내 함수를 사용하여 반복 단계를 건너 뛸 수 있습니까?

+0

'continue' =>'return' – njzk2

답변

6

함수는 루프 내에서 호출되는지 여부를 알지 못하며 해당 루프에 영향을주기 위해 continue 또는 break을 사용할 수 없습니다.

다른 통신 수단을 사용해야합니다. 예외를 사용하거나 부울을 반환하면 루프 코드에서 다음 반복으로 건너 뛰어야 함을 나타냅니다.

예외 사용 :

for value in xrange(10): 
    try: 
     function_1(value) 
    except ExceptionRaisedByFunction1: 
     # the frobnar failed to foozle the baz 
     continue 

현재 값에 적합하지 않고, 반복의 나머지는 예를 들어, 스킵 될 수 있음을 나타내는 함수의 특별한 상황을 신호한다.

또한 필터링, 대신에 발전기 기능을 사용하여 고려할 수

당신의 대신 반복 가능한 :

여기에 발전기가 5 이상되는 값을 산출하므로 for 루프가 결코로 continue를 사용할 필요가 없습니다
def filter_function(iterable): 
    for value in iterable: 
     if value >= 5: 
       print "value: ", value 
       yield value 

for value in filter_function(xrange(10)): 
    # do something with value 

5 미만의 값은 전혀 볼 수 없습니다.

관련 문제