일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터공학
- 알고리즘
- 소프트웨어공학
- 사이버보안
- 버전관리
- 데이터베이스
- I'm Sorry
- 코딩
- 네트워크
- 데이터구조
- 딥러닝
- 보안
- 인공지능
- 머신러닝
- 자바스크립트
- 2
- 웹개발
- Yes
- 파이썬
- 프로그래밍
- 프로그래밍언어
- 클라우드컴퓨팅
- 컴퓨터비전
- 빅데이터
- 소프트웨어
- 컴퓨터과학
- 네트워크보안
- 자료구조
- 데이터과학
- 데이터분석
- Today
- Total
스택큐힙리스트
중첩된 루프를 벗어나기 [중복] 본문
이 질문에 대한 답변이 이미 여기 있습니다 :
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 문을 호출할 수 있습니다. 라벨을 사용하면 중첩된 루프에서 탈출할 수 있으며, 중첩된 루프를 사용하는 복잡한 프로그램에서 매우 유용합니다.
중첩된 루프에서 탈출하는 방법에 대한 기본적인 이해는 프로그래밍에서 중요합니다. 라벨을 사용하여 중첩된 루프에서 탈출할 수 있도록 학습하면, 더 복잡한 알고리즘을 개발하는 데 도움이 될 것입니다.