본문 바로가기
  • Top Genius in the world
알고리듬

[알고리듬] #53 for문의 이해

by Mr.Algo 2024. 4. 14.
728x90
반응형

파이썬 실습창을 열 수 있습니다.실습창 열기

 

호랑나비

 

1. for문의 이해

for(for statement)은 반복을 지원하는 객체(iterable object)모든 원소에 대하여 순서대로 작업을 합니다.

반복을 지원하는 객체에는 str, list, tuple, range, dict, set, frozenset, bytes 등이 있습니다.

 

1-1  for문 형식

for문 형식 설명
for_stmt ::="for" target_list "in" expression_list ":" suite
["else" ":" suite]



“” 속의 내용은 생략할 수 없다.

[ ]는 생략 가능을 의미한다.

target_list는 각 반복마다 expression_list로부터 새로운 값을 할당받는다.
target_list
를 반복 변수(iteration variable)라 한다.

expression_list는 순서열, suite는 실행할 문장이다.
  실행할 문장은 들여쓰기(indentation)한다.

else가 있으면 elsesuite를 실행하고 for문을 벗어난다.
break break 명령문을 만나면 for문을 벗어난다.
else가 있어도 elsesuite를 실행하지 않고 벗어난다.
continue continue 명령문은 continue 다음의 남은 suite를 실행하지 않고(skip하고)
for
의 남은 과정을 계속 실행한다.

 

 

1-2  for문의 기본 사용

no example output description
1 for i in 'good':
    print(i,end=' ')
g o o d

str의 원소가 index 순서대로 i에 할당된다.

∙들여쓰기에 유의하여야 한다.
  end=' ': 줄을 바꾸지 않고, 한 칸 띄어 쓴다.

i가 반복변수(iteration variable)이다.
2 s=[1,3,5]
for i in s:
    print(i,end=' ')
1 3 5 list의 원소가 index 순서대로 i에 할당된다.
3 s=[[1,2],[11,22],[111,222]]
for x,y in s:
    print(x,y)
1 2
11 22
111 222
원소들의 개수가 같은 경우에는 unpacking할 수 있다.
반복변수의 개수와 원소의 개수가 같아야 한다.
4 for i in range(1,10,2):
    print(i,end=' ')
1 3 5 7 9 range object의 값 즉, 1부터 10 앞까지 2씩 증가하며 i에 할단된다.

for loop를 벗어나도 i의 마지막 값이 유지된다.
5 s=[1,3,5]
for i,x in enumerate(s):
    print(i,x)
0 1
1 3
2 5
enumerate(에뉴머레이트)index와 원소를 동시에 할당한다.
다음과 같은 의미이다.
s=[1,3,5]
i=0
for x in s:
    print(i,x)
    i+=1
6 s=[1,3,5,7,9]
t=[2,4,6,8]
for x,y in zip(s,t):
    print(x,y)
1 2
3 4
5 6
7 8

zip(s,t)는 순서대로 data를 하나씩 합친 값을 생성한다.
원소의 길이가 짧은 쪽(data의 개수가 작은 쪽)에 맞춘다.

다음의 코드와 같은 의미이다.
s=[1,3,5,7,9]
t=[2,4,6,8]
i=0
while i<len(s) and i<len(t):
    x=s[i]
    y=t[i]
    print(x,y)
    i+=1
7 for i in range(2):
    for j in range(2):
        print(i,j)

0 0
0 1
1 0
1 1

다중 for문 (nested for)∙입니다.

outer loop(바깥) i0인 동안, inner loop(안쪽) j0부터 2 앞까지 바뀌고, i1로 바뀌면 또 j0부터 2 앞까지 바뀐다.


 

※ [참고] 반복생성자(iterator)

a=iter([1,2,3]) # 반복생성자(iterator)
print(next(a))  # iterable한 object는 iter 함수로 반복생성자(iterator)를 만들 수 있다.
print(next(a))  # 반복생성자는 next 함수로 순차 처리할 수 있다.

 

2. for문의 사용

파이썬을 공부하는 사람들에게 많이 알려진 말이 있습니다.

'Life is too short, You need Python.'

 인생은 너무 짧다. 그래서 파이썬이 필요하다.

 

2-1 늘여쓰기

위의 말을 다음과 같이 한글자씩 늘여쓰기하여 봅시다.

L
Li
Lif
Life
:
:
Life is too short, You need Pytho
Life is too short, You need Python
Life is too short, You need Python.

 

a='Life is too short, You need Python.'
s=''           # 문자들을 모을 예정
for i in a:    # a의 문장에서 한글짜씩 i에 바인딩
    s+=i       # s에 i를 연결(concanate)
    print(s)

 

 

2-2 왼쪽 돌리기

위의 말을 10회 왼쪽 돌리기(left rotate)하여 다음과 같이 출력되게 하여봅시다.

Life is too short, You need Python.
ife is too short, You need Python.L
fe is too short, You need Python.Li
e is too short, You need Python.Lif
 is too short, You need Python.Life
is too short, You need Python.Life 
s too short, You need Python.Life i
 too short, You need Python.Life is
too short, You need Python.Life is 
oo short, You need Python.Life is t

 

a='Life is too short, You need Python.'
for i in range(10):
    print(a)
    a=a[1:]+a[0]
    
'''
for 다음의 i를 반복 변수(iteration variable)라고 합니다.
반복 변수는 임의로 이름을 정하여 사용할 수 있지만 
보통 i, j, k, l(엘) 등을 많이 사용합니다.
이유는 입력하기 편리하고, 전통적 습관이기도 합니다.

range(10)은 0부터 9까지의 정수 수열을 가지고 있는데 
이 수열을 순차적으로 i에 바인딩하고 3번 줄, 4번 줄을 실행합니다.
i는 직접사용하지 않고 반복에 이용됩니다.
4번 줄은 2번째 글자부터 끝까지에 첫번째 글자를 추가합니다.
이렇게 하면 한 글자 왼쪽 돌리기가 됩니다.
이렇게 10번 반복합니다.
'''

 

2-3 오른쪽 돌리기

다음과 같이 출력되도록 10회 오른쪽 돌리기에  도전히세요.

Life is too short, You need Python.
.Life is too short, You need Python
n.Life is too short, You need Pytho
on.Life is too short, You need Pyth
hon.Life is too short, You need Pyt
thon.Life is too short, You need Py
ython.Life is too short, You need P
Python.Life is too short, You need 
 Python.Life is too short, You need
d Python.Life is too short, You nee
더보기
a='Life is too short, You need Python.'
for i in range(10):
    print(a)
    a=a[-1]+a[:-1]

 

for문은 매우 많이 사용되는 문장입니다.

앞으로 많이 공부할 예정입니다.

수고하셨습니다.

 

오늘 끝.

728x90
반응형