Programming/Python

[코딩도장-파이썬] for 반복문

Supreme_YS 2020. 11. 14. 22:00

● for 반복문은 range에 반복할 횟수를 지정하고 앞에 in과 변수를 입력한다. 그리고 끝에 :(콜론)을 붙인 뒤 다음 줄에 반복할 코드를 넣는다. for 변수 in range(횟수) → 반복할 코드로 순환하는 것을 루프(loop)라고 부른다. 반복문의 변수 i

변수 i를 루프 인덱스라고도 부르며 index의 첫 머리글자를 따서 i를 주로 사용

형태

for 변수 in range(횟수):

     반복할 코드

>>> for i in range(100):
print('hello, world!')

for와 range 출처. 코딩도장

 

파이썬 2.7과 파이썬 3에서 range는 결과가 조금 다르다. 파이썬 2.7에서는 range를 사용하면 실제로 연속된 숫자가 들어있는 리스트를 만들어내지만 파이썬 3에서는 range 객체(반복 가능한 객체)를 만들어낸다. 따라서 파이썬 2.7의 range는 리스트를 만들어내므로 아주 큰 숫자를 지정하면 메모리를 많이 사용하게 된다. 그래서 보통 파이썬 2.7에서 리스트 대신 객체를 생성할 때는 xrange를 사용한다. 특히 파이썬 3에서는 range가 객체를 생성하는 방식으로 바뀜.

 

파이썬 2.7  파이썬3
>>> range(10)
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #리스트 생성

>>> list(range(10))    # range 객체를 리스트로 만듦

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

● for 변수 in range(시작, 끝) : 활용하기

>>> for i in range(5, 12):
print('Hello, World', i) # 5부터 11까지 출력

 

Hello, World 5
Hello, World 6
Hello, World 7
Hello, World 8
Hello, World 9
Hello, World 10
Hello, World 11

 

● for 변수 in range(시작, 끝, 증감폭) : 활용하기

>>> for i in range(0, 10, 2):
print('Hello, Python', i) # 0부터 8까지 출력

 

Hello, Python 0
Hello, Python 2
Hello, Python 4
Hello, Python 6
Hello, Python 8

 

● for 변수 in range(시작, 끝, 증감폭) : 활용하여 숫자 감소시키기

>>> for i in range(10, 0, -1):
print('Hello, Supreme', i) # 10부터 1까지 출력

Hello, Supreme 10
Hello, Supreme 9
Hello, Supreme 8
Hello, Supreme 7
Hello, Supreme 6
Hello, Supreme 5
Hello, Supreme 4
Hello, Supreme 3
Hello, Supreme 2
Hello, Supreme 1

 

증가폭을 음수로 지정하는 방법 말고도 reversed를 사용하면 숫자의 순서를 반대로 뒤집을 수 있다.

>>> for i in reversed(range(10)):
print('Hello, world', i)

 

Hello, world 9
Hello, world 8
Hello, world 7
Hello, world 6
Hello, world 5
Hello, world 4
Hello, world 3
Hello, world 2
Hello, world 1
Hello, world 0

 

● 반복문의 변수 i 변경?  --> 불가능

>>> for i in range(10):
print(i, end=' ')
i = 10

 

0 1 2 3 4 5 6 7 8 9 

왜냐하면 변수 i는 반복할 때마다 다음 값으로 덮어써지기 때문에 값을 할당해도 변수에 영향을 주지 못한다.

 

● 사용자에게 반복횟수 받기

>>> count = int(input('반복할 횟수를 입력하세욤 : '))
반복할 횟수를 입력하세욤 : 10
>>> for i in range(count):
print('Hello, World', i)


Hello, World 0
Hello, World 1
Hello, World 2
Hello, World 3
Hello, World 4
Hello, World 5
Hello, World 6
Hello, World 7
Hello, World 8
Hello, World 9

 

● 시퀀스 객체 반복하기

for는 리스트, 튜플, 문자열 등 시퀀스 객체로 반복할 수 있다. 다음과 같이 for에 range 대신 리스트를 넣으면 리스트의 요소를 꺼내면서 반복한다. 튜플도 마찬가지다. for 반복문의 변수를 i 대신 fruit로 사용했다. for에서 변수 i는 다른 이름으로 만들어도 상관없다.

리스트 튜플 문자열 문자열 뒤집기
a = [10, 20, 30, 40, 50] 
for i in a: 
    print(i) 
fruits = ('apple', 'orange', 'grape') 
for fruit in fruits: 
    print(fruit)
for letter in 'Python Supreme_YS': 
    print(letter, end=' ') 
for letter in reversed('Python'):
    print(letter, end= ' ' )
10
20
30
40
50
apple
orange
grape
P y t h o n   S u p r e m e _ Y S  n o h t y P 

reversed는 시퀀스 객체를 넣으면 시퀀스 객체를 뒤집어 준다.(원본 객체 자체는 바뀌지 않으며 뒤집어서 꺼내줌).