파이썬 이중 for문 continue - paisseon ijung formun continue

파이썬이야기

[파이썬, python] 이중 Loop와 continue에 관하여

파이썬의 순회문(loop)의 경우 continue, break, pass 등을 통해 loop를 조정할 수 있다. 오늘 어떤 분이 다른 사람의 코드를 사용 중인데loop의 continue가 제대로 작동하지 않는다고 하셔서 이를 살펴보았다. 그 문제는 for loop이 이중으로 만들어져있는 경우 안쪽 loop가 continue를 했을 때 해당 loop 안에서 continue가 이루어지는 것이 아니라 바깥의 loop로 continue가 되어야하는데 어떻게 해야하는가라는 질문이었다. 해당 코드의 개략적인 윤곽은 아래와 같다.   

붉은색 박스에서 조건문(if)가 있고 조건을 만족시키면 붉은색 박스의 loop로 continue가 되는 것이 아니라 파란색 박스로 continue가 되어한다는 것이다. 위와 같은 상황에서는 변수 Decision을 Yes로 하든지 No로 하든지 상관없이 동일한 결과가 출력된다. (여기서 break를 써버리면 바로 아래의 Result.append()로 내려가서 의도한 바와 다른 결과를 얻게 된다.)다른 언어에서는 어떻게 될지는 모르겠지만 파이썬에서는 def를 사용하여 return을 true, false로 해주면 이 문제는 간단하게 해결된다. 해결 방법은 아래와 같다. 

종전의 붉은색 박스의 loop문을 함수로 전환하고 return값을 지정해준다. 이 값을 충족시켰을 경우 True가 반환되므로 파란색 박스의 continue가 작동하게 된다. 이렇게 되면 변수 Decision을 Yes, No 등으로 입력하여 조정할 수 있게 된다. Yes를 쓰면 아무 것도 없는 빈 리스트가 나오고 다른 글자를 입력하면 [1,2,3,4.. 이 출력된다.

[개요]

코딩을 하다보면 가장 흔하게 쓰는 문법중 하나가 for문이라고 생각됩니다.
필요에 따라 for문을 중첩으로 사용하는 경우도 생기는데, 이때 자바스크립트와 파이썬에서 이중for문을 탈출하는법을 알아보겠습니다.!

[설명]

1.자바스크립트

이중 for문을사용하기전 배열을 두개 생성하도록 하겠습니다.

var arr1 = [1,2,3,4]; var arr2 = [11,22,3,44]; var arrLen1 = arr1.length; var arrLen2 = arr2.length;

우선 두 개의 배열을 생성했습니다.
그리고 각 배열의 length또한 arrLen1,arrLen2 변수에 할당했습니다.
for문안에서 직접적으로 length사용시 반복이 될때마다 스코프 체인의 활성화 객체를 거치게 되서 응답속도가 느려질 수 있습니다.
이 부분은 추후에 다루도록 하겠습니다.

이 두가지 배열의 요소들을 검사해 arr1의 요소와 arr2의 요소가 일치한다면 for문을 빠져나오도록 하겠습니다.

outerFor : for(var i=0; i < arrLen1; i++) { innerFor : for(var j=0; j < arrLen2; j++) { if(arr1[i] == arr2[j]) break outerFor; } }

상단의 코드와 같이 for문 앞에 label을 붙여주어 break시 해당 for문을 빠져나올수 있도록 할 수 있습니다.

2.파이썬

arr1 = [1,2,3,4] arr2 = [11,22,3,44] for arr1_idx, arr1_val in enumerate(arr1): for arr2_idx, arr2_val in enumerate(arr2): if arr1_val == arr2_val: print("탈출") break else: continue break

위의 코드에 대해 설명을 하자면
파이썬에서는 for문도 else문을 사용할 수 있습니다.
여기서 else문은 안쪽 for문에 반복될 요소가 더이상 없을때 continue를 통해 바깥for문이 실행되게 합니다.
즉 바깥for문 첫번째요소-> 안쪽for문 11,22,3,4 체크후 바깥 for문 두번째 요소로 넘어가게 됩니다.
안쪽 for문에서 break를 만나게 되면 해당 안쪽 for문(else문 포함)은 종료되게 되고 젤 하단부분의 break를 만나 2중 for문을 탈출하게 됩니다.

[마치며..]

구글링을 통해 for문에 사용가능한 여러 테크닉들을 보며 항상 사용하는데도 아는것이 별로 없는것에 대한 반성을 하게되었습니다.! 이상입니다

파이썬의 반복문의 흐름을 필요에 따라 끊고, 종료하거나 건너뛰어야 합니다.  for loop 또는 while loop는 주어진 조건이 실패할 때까지 반복됩니다. 중단(break) 또는 계속(continue) 문을 사용한다면 반복문의 흐름이 정상적인 방식으로 변경될 것입니다.

3.2 파이썬 for 와 loop : Enumerate, Break, Continue 구문

Loop 란 무엇입니까? 파이썬의 루프는 특정 조건이 충족될 때까지 코드 횟수 블록을 반복 실행할 수 있습니다. For loop, while loop, dowhile 등이 있는 다른 프로그래밍 언어와 달리 그들의 사용법은 프

www.entity.co.kr

앞의 글에서 봤겠지만 루프의 개면음 거의 모든 프로그램 언어에 제공됩니다. 

파이썬의 반복문은 리스트, 튜플, 문자열, 딕셔너리등을반복하는데 도움이 됩니다.

파이썬 break 문

파이썬의 중단(break)문은 반복문을 종료하는 것을 처리합니다.

중첩된 반복문(중첩 루프) 내부에서 중단 문이 사용되는 경우 현재 반복문이 종료되고 반복문 다음에 오는 코드로 흐름이 계속됩니다.

Break문의 반복문 순서도는 아래와 같습니다.

반복문 흐름 순서도

순서도의 설명

Step 1)

반복문이 실행됩니다.

Step 2)

반복문의 조건이 True면 반복문이 실행되는 Step2를 실행합니다.

Step 3)

반복문에 중단문(Break)이 있으면 반복문을 빠져나옵니다.

Step 4)

반복문이 실행되고 완료되면 다시 반복을 진행합니다.

Step 5)

반복문 조건이 false인 경우 반복문을 빠져나옵니다.

반복문의 계속 실행(continue)

for ~ loop 문이 시작되면 조건문(if)을 확인합니다.

참(true)이면 중단문이 실행되고 for ~ loop 문이 종료됩니다.

조건문이 거짓(false)이면 반복문의 내부 코드가 실행됩니다.

for loop 문에서의 계속문 설명

while loop가 실행되면 조건문(if)을 확인하고, 참(true)이면 중단문이 실행되고 while loop가 종료됩니다.

조건이 거짓(false)인 동안 반복문의 내부 코드가 실행됩니다. 

while loop의 중단문 설명

예) for ~ loop문에서의 중단(break) 문 예제

['Siya', 'Tiya', 'Cito', 'Daksh', 'Riya', 'Cito']로 구성된 리스트(my_list)는 루프를 사용하여 반복됩니다. 우리는 목록에서 'Cito'라는 이름을 검색하려고 합니다.

for ~ loop 내부에서 if 조건은 my_list의 요소를 'Cito'라는 이름과 비교합니다. 조건이 참(true)이면 중단문이 실행되고 반복문이 종료됩니다.

중단문(break)을 사용하는 코드는 아래와 같습니다.

my_list = ['Siya', 'Tiya', 'Cito', 'Daksh', 'Riya', 'Cito'] for i in range(len(my_list)): print(my_list[i]) if my_list[i] == 'Cito': print('Found the name Cito') break print('After break statement') print('Loop is Terminated')

결과:

Siya Tiya Cito Found the name Cito Loop is Terminated

예) while ~ loop문에서의 중단(break) 문 예제

my_list = ['Siya', 'Tiya', 'Cito', 'Daksh', 'Riya', 'Cito'] i = 0 while True: print(my_list[i]) if (my_list[i] == 'Cito'): print('Found the name Cito') break print('After break statement') i += 1 print('After while-loop exit')

결과 :

Siya Tiya Cito Found name Cito After while-loop exit

예) while ~ loop문에서의 중단(break)문 예제

예제에 2개의 반복문이 있습니다. 두 개의 반복문 모두 0에서 3까지 반복됩니다. 두 번째 반복문에서 두번째 루프 인덱스 값이 2인 경우 중단해야 하는 조건을 추가했습니다.

따라서 중단문 때문에 두 번째 루프는 2와 3에 대해서 반복되지 않습니다.

for i in range(4): for j in range(4): if j==2: break print("The number is ",i,j);

결과:

The number is 0 0 The number is 0 1 The number is 1 0 The number is 1 1 The number is 2 0 The number is 2 1 The number is 3 0 The number is 3 1

파이썬의 계속 문(continue)

계속 문(continue)은 다음에 오는 코드를 건너뛰고 컨트롤이 다음 반복의 시작으로 다시 전달됩니다.

계속 문의 흐름

계속문의 흐름도

Step 1)

반복문이 실행됩니다.

Step 2)

루프 내부의 코드 실행이 수행됩니다. 루프 내부에 계속 문이 있는 경우 컨트롤은 다음 반복에 대한 루프의 시작과 같은 Step 4로 돌아갑니다.

Step 3)

루프 내부의 코드 실행이 수행됩니다.

Step 4)

계속 문이 있거나 본문 내부에 루프 실행이 완료되면 다음 반복이라고 합니다.

Step 5)

루프 실행이 완료되면 루프가 종료되어 Step 7로 이동합니다.

Step 6)

Step 1의 루프 상태가 실패하면 루프를 종료하고 Step 7로 이동합니다.

Step 7)

루프의 끝입니다.

명령문 실행 중 continu의 흐름

for ~ loop는 주어진 배열 my_list를 반복합니다. 대 루프 내부에서 조건문(if)이 실행됩니다. 조건이 참(true)이면 계속(continu) 문이 실행되고 컨트롤이 다음 반복에 대한 루프의 시작으로 전달됩니다.

코드의 흐름은 아래와 같습니다.

for loop에서의 continu 사용 코드

while ~ loop 가 실행되면 조건문(if)이 참(true) 경우 계속 실행됩니다. 컨트롤은 다음 반복에 대한 while ~ loop의 시작으로 돌아갑니다. 조건이 false인 동안 루프 내부의 코드가 실행됩니다.

코드의 흐름은 아래와 같습니다.

while ~ loop 의 continu 사용 코드

예 : for ~ loop에서의 continu

for i in range(10): if i == 7: continue print("The Number is :" , i)

결과 : 

The Number is : 0 The Number is : 1 The Number is : 2 The Number is : 3 The Number is : 4 The Number is : 5 The Number is : 6 The Number is : 8 The Number is : 9

예 : while ~ loop 에서의 continu

i = 0 while i <= 10: if i == 7: i += 1 continue print("The Number is :" , i) i += 1

결과 : 

The Number is : 0 The Number is : 1 The Number is : 2 The Number is : 3 The Number is : 4 The Number is : 5 The Number is : 6 The Number is : 8 The Number is : 9 The Number is : 10

예: 중첩 루프에서의 continu

아래 예제에서는 2개의 반복문이 중첩되어 있습니다. for ~ loop 둘 다 0에서 3까지 반복됩니다. 두 번째 루프에서 두 번째 루프 인덱스 값이 2인 경우계속 진행(continu)하는 조건이 있습니다. 따라서 계속 문 으로 인해 두 번째 for ~ loop 2에 대한 반복을 건너뛰고 3으로 진행합니다.

for i in range(4): for j in range(4): if j==2: continue print("The number is ",i,j);

결과:

The number is 0 0 The number is 0 1 The number is 0 3 The number is 1 0 The number is 1 1 The number is 1 3 The number is 2 0 The number is 2 1 The number is 2 3 The number is 3 0 The number is 3 1 The number is 3 3

파이썬의 pass문

Python의 pass 문은 나중에 구현될 예정인 루프, 함수, 클래스, if-문 내부의 자리 표시자로 사용됩니다.

파이썬의 패스 문은 무엇입니까?

파이썬 패스는 null 문입니다. 파이썬 인터프리터가 패스 문을 가로질러 오면 아무것도 하지 않으며 무시됩니다.

패스 문을 사용할 시기는 언제입니까?

본문이 비어 있는 함수나 클래스가 있다고 생각해 보십시오. 나중에 코드를 작성할 계획입니다. 파이썬 인터프리터는 빈 본문에 걸쳐 오는 경우 오류를 던집니다.

함수 또는 클래스의 본문 내부에 주석을 추가할 수도 있지만 인터프리터는 주석을 무시하고 오류를 throw 합니다.

패스 문은 함수 또는 클래스 본문의 본문 내부에 사용할 수 있습니다. 실행 중에 통역사는 패스 문을 가로질러 올 때 오류를 주지 않고 무시하고 계속됩니다.

예: 함수 내부의 pass

이 예제에서는 패스가 함수 내부에 추가됩니다. 함수가 아래와 같이 호출될 때 실행됩니다.

def my_func(): print('pass inside function') pass my_func()

결과:

pass inside function

예: 클래스 내부의 pass

아래 예제에서는 인쇄 문이 있는 빈 클래스와 패스 문만 만들었습니다. 패스 문은 클래스 "My_Class" 내부의 코드가 나중에 구현될 것임을 나타냅니다.

classMy_Class: print("Inside My_Class") pass

결과:

Inside My_Class

예: 루프 내부의 pass

아래 예제에서는 문자열 'Cito'가 루프 용 루프 내부에 사용됩니다. 조건이 문자 't'을 확인하고 인쇄 문을 호출한 다음 통과합니다.

# Pass statement in for-loop test = "Cito" for i in test: if i == 't': print('Pass executed') pass print(i)

결과:

C i Pass executed t o

예 : if-loop 내부의 pass

이 예제에서 if 루프는 a값에 대해 확인하고 조건이 true인 경우 "pass executed"라는 문과 전달을 인쇄합니다.

a=1 if a==1: print('pass executed') pass

결과:

pass executed

언제 break문과 continu문을 사용할 수 있습니까?

  • 루프 내에서 사용할 때 중단(break) 문은 루프를 종료하고 종료합니다. 중첩 루프 내부에 사용하면 현재 루프에서 분리됩니다.
  • 계속(continu) 문은 루프 내에서 사용할 때 현재 실행을 중지하고 컨트롤은 루프의 시작으로 돌아갑니다.

중단 문과 계속 문 간의 주요 차이점은 중단 키워드가 발생하면 루프를 종료한다는 것입니다.

계속 키워드의 경우 실행 중인 현재 반복이 중지되고 다음 반복으로 진행됩니다.

요약:

  • 파이썬 break 및 continu는 루프 내부에 사용되어 루프의 흐름을 정상 절차에서 변경합니다.
  • for loop 또는 while loop는 주어진 조건이 실패할 때까지 반복됩니다. 중단 또는 계속 문을 사용하면 루프의 흐름이 정상적인 방식으로 변경됩니다.
  • 루프 내에서 사용할 때 중단(break) 문은 루프를 종료하고 종료합니다. 중첩 루프 내부에 사용하면 현재 루프에서 분리됩니다.
  • 루프 내에서 사용할 때 계속(continu) 문은 현재 실행을 중지하고 컨트롤이 루프의 시작으로 돌아갑니다.
  • 중단(break) 문과 계속(continu) 문 간의 주요 차이점은 중단(break) 키워드가 발생하면 루프를 종료한다는 것입니다.
  • 파이썬 pass 문은 나중에 구현될 예정인 루프, 함수, 클래스, if-문 내부의 자리 표시자로 사용됩니다.
  • 파이썬 pass는 null 문입니다. 실행이 시작되고 인터프리터가 패스 문을 가로질러 오면 아무것도 하지 않으며 무시됩니다.

Toplist

최신 우편물

태그