스택큐힙리스트

중첩된 루프를 벗어나기 [중복] 본문

카테고리 없음

중첩된 루프를 벗어나기 [중복]

스택큐힙리스트 2023. 4. 5. 02:21
반응형

이 질문에 대한 답변이 이미 여기 있습니다 :

How can I break out of multiple loops?

(39 답변)

3년 전에 종료되었습니다.

중첩된 반복문에서 예외를 던지는 것 이외에 더 쉬운 방법이 있습니까? (Perl에서는 각 루프에 라벨을 지정하고 적어도 외부 루프를 계속할 수 있습니다.)

for x in range(10):

for y in range(10):

print x*y

if x*y > 50:

break both loops

즉, 이보다 더 좋은 방법이 있나요?

class BreakIt(Exception): pass

try:

for x in range(10):

for y in range(10):

print x*y

if x*y > 50:

raise BreakIt

except BreakIt:

pass

답변 1

for x in xrange(10):

for y in xrange(10):

print x*y

if x*y > 50:

break

else:

continue # only executed if the inner loop did NOT break

break # only executed if the inner loop DID break

보다 깊은 순환문에도 동일한 작동 방식이 적용됩니다.

for x in xrange(10):

for y in xrange(10):

for z in xrange(10):

print x,y,z

if x*y*z == 30:

break

else:

continue

break

else:

continue

break

답변 2

중첩된 루프 탈출하기 [중복됨]

중첩된 루프는 복잡한 프로그램에서 자주 사용됩니다. 그러나 때로는 중첩된 루프에서 빠져나와야 할 때도 있습니다. 한 루프에서 break 문을 사용하면 해당 루프가 종료됩니다. 하지만 중첩된 루프에서는 어떻게 탈출할 수 있을까요?

중첩된 루프에서 탈출하려면, 라벨(label) 문을 사용해야 합니다. 라벨 문은 특정 루프에서 break 문을 사용할 때 사용할 수 있는 이름이 있는 레이블입니다. 라벨을 사용하면 중첩된 루프에서 break 문을 사용해 전체 루프를 종료할 수 있습니다.

예를 들어, 다음과 같은 코드가 있다고 가정해 봅시다.

for i in range(3):

for j in range(3):

if i == j:

break

print(i, j)

위 코드에서 i와 j가 같을 때 루프를 종료하는 것이 목적입니다. 그러나 위 코드는 안쪽 루프에서만 종료됩니다. 전체 루프를 종료하려면, 라벨 문을 사용해야 합니다.

for i in range(3):

for j in range(3):

if i == j:

break

print(i, j)

else:

continue

break

위 코드에서 라벨을 사용하여 전체 루프에서 break 문을 호출할 수 있습니다. 라벨을 사용하면 중첩된 루프에서 탈출할 수 있으며, 중첩된 루프를 사용하는 복잡한 프로그램에서 매우 유용합니다.

중첩된 루프에서 탈출하는 방법에 대한 기본적인 이해는 프로그래밍에서 중요합니다. 라벨을 사용하여 중첩된 루프에서 탈출할 수 있도록 학습하면, 더 복잡한 알고리즘을 개발하는 데 도움이 될 것입니다.

반응형
Comments