Python 중첩 루프

Python 중첩 루프

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

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 )

보조 공간: 오(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 ) 중첩 루프보다 빠릅니다.

보조 공간: 에)