logo

Python 중첩 루프

Python 프로그래밍 언어에는 두 가지 유형의 루프가 있습니다. for 루프 그리고 while 루프 . 이러한 루프를 사용하여 Python에서 중첩 루프를 만들 수 있습니다. 중첩 루프는 루프 내부의 루프를 의미합니다. 예를 들어 for 루프 내부의 while 루프, for 루프 내부의 for 루프 등입니다.

굵은 텍스트 CSS
Python 중첩 루프

Python 중첩 루프

Python 중첩 루프 구문:

Outer_loop 표현식:



Inner_loop 표현식:

inner_loop 내부의 명령문

Outer_loop 내부의 문

Python 중첩 루프 예

예제 1: Python 중첩 루프의 기본 예

파이썬3




x>=> [>1>,>2>]> y>=> [>4>,>5>]> for> i>in> x:> >for> j>in> y:> >print>(i, j)>

>

>

산출:

1 4 1 5 2 4 2 5>

파이썬3




x>=> [>1>,>2>]> y>=> [>4>,>5>]> i>=> 0> while> i <>len>(x) :> >j>=> 0> >while> j <>len>(y) :> >print>(x[i] , y[j])> >j>=> j>+> 1> >i>=> i>+> 1>

>

>

시간 복잡도:2)

보조 공간: 오(1)

예제 2: Python 중첩 for 루프를 사용하여 곱셈표 인쇄

파이썬3


자바 끝



# Running outer loop from 2 to 3> for> i>in> range>(>2>,>4>):> ># Printing inside the outer loop> ># Running inner loop from 1 to 10> >for> j>in> range>(>1>,>11>):> ># Printing inside the inner loop> >print>(i,>'*'>, j,>'='>, i>*>j)> ># Printing inside the outer loop> >print>()>

>

>

산출:

2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 3 * 10 = 30>

시간 복잡도:2)

보조 공간: 오(1)

위의 예에서 우리가 하는 일은 2와 3의 곱셈표에 대해 2에서 3까지 실행되는 외부 for 루프를 취하는 것입니다. 그런 다음 그 루프 내에서 우리는 곱셈을 인쇄하는 내부에서 1에서 10까지 실행되는 내부 for 루프를 취합니다. 내부 루프의 각 반복 값에 반복 아래 출력에서 ​​볼 수 있듯이 외부 루프의 값입니다.

예 3: 서로 다른 내부 및 외부 중첩 루프를 사용하여 인쇄

파이썬3




# Initialize list1 and list2> # with some strings> list1>=> [>'I am '>,>'You are '>]> list2>=> [>'healthy'>,>'fine'>,>'geek'>]> # Store length of list2 in list2_size> list2_size>=> len>(list2)> # Running outer for loop to> # iterate through a list1.> for> item>in> list1:> > ># Printing outside inner loop> >print>(>'start outer for loop '>)> ># Initialize counter i with 0> >i>=> 0> ># Running inner While loop to> ># iterate through a list2.> >while>(i # Printing inside inner loop print(item, list2[i]) # Incrementing the value of i i = i+1 # Printing outside inner loop print('end for loop ')>

>

>

자바 난수

산출:

start outer for loop I am healthy I am fine I am geek end for loop start outer for loop You are healthy You are fine You are geek end for loop>

시간 복잡도:2)

보조 공간: 오(1)

이 예에서는 일부 문자열을 사용하여 두 개의 목록을 초기화합니다. len() 함수를 사용하여 list2의 크기를 'list2_Size'에 저장하고 이를 while 루프에서 카운터로 사용합니다. 그 후 외부 for 루프를 실행하여 list1을 반복 그리고 해당 루프 내에서 내부 while 루프를 실행하여 list1의 모든 값에 대해 list2의 각 값을 인쇄하는 내부 목록 인덱싱을 사용하여 list2를 반복합니다.

중첩 루프에서 break 문 사용

일종의 루프 제어문입니다. 루프에서는 다음을 사용할 수 있습니다. break 문 루프를 종료합니다. 루프에서 break 문을 사용하면 나머지 반복을 건너뛰고 루프를 종료합니다. 예를 들어 이해해 봅시다.

암호:

파이썬3




# Running outer loop from 2 to 3> for> i>in> range>(>2>,>4>):> ># Printing inside the outer loop> ># Running inner loop from 1 to 10> >for> j>in> range>(>1>,>11>):> >if> i>=>=>j:> >break> ># Printing inside the inner loop> >print>(i,>'*'>, j,>'='>, i>*>j)> ># Printing inside the outer loop> >print>()>

>

>

산출:

2 * 1 = 2 3 * 1 = 3 3 * 2 = 6>

시간 복잡도:2)

보조 공간: 오(1)

위의 코드는 예제 2와 동일합니다. 이 코드에서는 다음을 사용하여 내부 루프 내부에 break 문을 사용하고 있습니다. if 문 . 내부 루프 내부에서 'i'가 'j'와 같으면 내부 루프가 종료되고 출력 테이블에서 볼 수 있듯이 나머지 반복은 실행되지 않습니다. 3은 다음 반복에서 최대 2번의 반복으로 인쇄됩니다. 'i'는 'j'와 같아지고 루프가 중단됩니다.

중첩 루프에서 continue 문 사용

continue 문도 루프 제어문의 한 유형입니다. 이는 break 문의 정반대입니다. continue 문은 루프를 강제로 다음 루프 반복으로 점프하는 반면, break 문은 루프를 종료합니다. 코드를 이용하여 이해해보자.

파이썬3




# Running outer loop from 2 to 3> for> i>in> range>(>2>,>4>):> ># Printing inside the outer loop> ># Running inner loop from 1 to 10> >for> j>in> range>(>1>,>11>):> >if> i>=>=>j:> >continue> ># Printing inside the inner loop> >print>(i,>'*'>, j,>'='>, i>*>j)> ># Printing inside the outer loop> >print>()>

>

>

산출:

2 * 1 = 2 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 3 * 1 = 3 3 * 2 = 6 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 3 * 10 = 30>

시간 복잡도:2)

자바 if else 문

보조 공간: 오(1)

위 코드에서는 break 문 대신 continue 문을 사용하고 있습니다. 여기서 내부 루프에서 'i'가 'j'와 같게 되면 내부 루프의 나머지 코드를 건너뛰고 출력에서 ​​볼 수 있듯이 다음 반복으로 점프합니다. 2 * 2 = 4 및 3 * 3 = 9는 다음과 같습니다. 그 시점에서 'i'는 'j'와 같아지기 때문에 인쇄되지 않습니다.

목록 이해를 사용하는 한 줄 중첩 루프

여러 줄의 중첩 루프를 한 줄로 변환하려면 다음을 사용합니다. Python의 목록 이해 . 목록 이해에는 각 요소에 대해 실행되는 표현식과 목록의 각 요소를 반복하는 for 루프로 구성된 대괄호가 포함됩니다.

목록 이해의 구문:

새로운 목록 = [ 표현식(요소) ~을 위한 요소 ~에 이전 목록 만약에 상태 ]

암호:

파이썬3




# Using list comprehension to make> # nested loop statement in single line.> list1>=> [[j>for> j>in> range>(>3>)]> >for> i>in> range>(>5>)]> # Printing list1> print>(list1)>

>

>

산출:

[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]>

위 코드에서는 목록 이해 [j for j in range(3)]의 내부 루프에서 목록 이해를 사용하여 목록 내부에 목록을 저장하여 외부 반복의 모든 반복에 대해 목록 [0, 1, 2]를 만듭니다. 범위(5)에 있는 i에 대해 루프를 실행합니다.

시간 복잡도:2) 중첩 루프보다 빠릅니다.

보조 공간: 에)