[python] 파이썬에서“continue”문장의 사용 예?

정의continue문은 다음과 같습니다

continue문은 루프의 다음 반복을 계속.

좋은 코드 예제를 찾을 수 없습니다.

누군가 continue가 필요한 간단한 사례를 제안 할 수 있습니까?



답변

다음은 간단한 예입니다.

for letter in 'Django':    
    if letter == 'D':
        continue
    print("Current Letter: " + letter)

출력은 다음과 같습니다.

Current Letter: j
Current Letter: a
Current Letter: n
Current Letter: g
Current Letter: o

루프의 다음 반복을 계속합니다.


답변

“사업 중단”에 도달하기 전에 충족해야 할 조건이 많은 곳에서 계속 루프를 사용하고 싶습니다. 따라서 다음과 같은 코드 대신

for x, y in zip(a, b):
    if x > y:
        z = calculate_z(x, y)
        if y - z < x:
            y = min(y, z)
            if x ** 2 - y ** 2 > 0:
                lots()
                of()
                code()
                here()

나는 이와 같은 코드를 얻는다 :

for x, y in zip(a, b):
    if x <= y:
        continue
    z = calculate_z(x, y)
    if y - z >= x:
        continue
    y = min(y, z)
    if x ** 2 - y ** 2 <= 0:
        continue
    lots()
    of()
    code()
    here()

이 방법으로 그렇게하면 매우 깊이 중첩 된 코드를 피할 수 있습니다. 또한 가장 자주 발생하는 경우를 먼저 제거하여 루프를 최적화하는 것이 쉽습니다. 따라서 다른 쇼 토퍼가 없을 때 드물지만 중요한 경우 (예 : 제수는 0) 만 처리하면됩니다.


답변

일반적으로 continue가 필요 / 유용한 상황은 루프의 나머지 코드를 건너 뛰고 반복을 계속하려는 경우입니다.

필자는 if 문을 사용하여 동일한 논리를 제공 할 수 있기 때문에 실제로 필요하다고 생각하지 않지만 코드의 가독성을 높이는 것이 유용 할 수 있습니다.


답변

import random

for i in range(20):
    x = random.randint(-5,5)
    if x == 0: continue
    print 1/x  

continue는 매우 중요한 제어문입니다. 위의 코드는 일반적인 응용 프로그램을 나타내며 0으로 나누는 결과를 피할 수 있습니다. 프로그램의 출력을 저장해야 할 때 자주 사용하지만 프로그램이 충돌하면 출력을 저장하고 싶지 않습니다. 위의 예제를 테스트하려면 마지막 명령문을 print 1 / float (x)로 바꾸십시오. 그렇지 않으면 randint가 정수를 리턴하므로 분수가있을 때마다 0을 얻습니다. 명확성을 위해 생략했습니다.


답변

어떤 사람들은 가독성에 대해 논평했습니다. “아, 가독성이 그다지 도움이되지 않습니까?

메인 코드 전에 확인이 필요하다고 가정하십시오.

if precondition_fails(message): continue

''' main code here '''

어쨌든 코드를 변경하지 않고 메인 코드를 작성한 후에이 작업을 수행 할 수 있습니다 . 코드를 비교하면 기본 코드에 대한 간격 변경이 없으므로 “계속”이 추가 된 행만 강조 표시됩니다.

프로덕션 코드의 breakfix를 수행해야한다고 상상해보십시오. 계속해서 계속해서 줄을 추가하는 것으로 나타났습니다. 코드를 검토 할 때 이것이 유일한 변화임을 쉽게 알 수 있습니다. 메인 코드를 if / else로 래핑하기 시작하면 간격 변경을 무시하지 않는 한 diff는 새로 들여 쓴 코드를 강조 표시합니다. 특히 Python에서 위험합니다. 짧은 통지로 코드를 롤아웃 해야하는 상황이 아니라면이 점을 완전히 이해하지 못할 수도 있습니다.


답변

def filter_out_colors(elements):
  colors = ['red', 'green']
  result = []
  for element in elements:
    if element in colors:
       continue # skip the element
    # You can do whatever here
    result.append(element)
  return result

  >>> filter_out_colors(['lemon', 'orange', 'red', 'pear'])
  ['lemon', 'orange', 'pear']


답변

3과 5의 배수가 아닌 모든 숫자를 인쇄하고 싶다고 가정 해 봅시다.

for x in range(0, 101):
    if x % 3 ==0 or x % 5 == 0:
        continue
        #no more code is executed, we go to the next number 
    print x