16.3 시퀀스 객체로 반복하기

지금까지 forrange를 사용하면서 눈치챘겠지만, forrange 대신 시퀀스 객체를 넣어도 될 것 같죠? 맞습니다. for는 리스트, 튜플, 문자열 등 시퀀스 객체로 반복할 수 있습니다.

다음과 같이 forrange 대신 리스트를 넣으면 리스트의 요소를 꺼내면서 반복합니다.

>>> a = [10, 20, 30, 40, 50]
>>> for i in a:
...     print(i)
...
10
20
30
40
50

물론 튜플도 마찬가지로 튜플의 요소를 꺼내면서 반복합니다

>>> fruits = ('apple', 'orange', 'grape')
>>> for fruit in fruits:
...     print(fruit)
...
apple
orange
grape

참고로 여기서는 for 반복문의 변수를 i 대신 fruit로 사용했습니다. for에서 변수 i는 다른 이름으로 만들어도 상관없습니다.

문자열도 시퀀스 객체라고 했죠? for에 문자열을 지정하면 문자를 하나씩 꺼내면서 반복합니다.

>>> for letter in 'Python':
...     print(letter, end=' ')
...
P y t h o n

문자열 'Python'의 문자가 하나씩 분리되어 출력되었습니다. 여기서는 printend=' '을 지정했으므로 줄바꿈이 되지 않고, 각 문자가 공백으로 띄워져서 출력됩니다.

그럼 문자열 'Python'을 뒤집어서 문자를 출력할 수는 없을까요? 이때는 앞에서 배운 reversed를 활용하면 됩니다.

  • reversed(시퀀스객체)
>>> for letter in reversed('Python'):
...     print(letter, end=' ')
...
n o h t y P

문자열 'Python'에서 문자 n부터 P까지 출력되었습니다. reversed는 시퀀스 객체를 넣으면 시퀀스 객체를 뒤집어 줍니다(원본 객체 자체는 바뀌지 않으며 뒤집어서 꺼내줌).

지금까지 for 반복문에 대해서 배웠습니다. for 반복문은 반복 개수가 정해져 있을 때 주로 사용합니다. 여기서는 range의 다양한 사용 방법을 익혀 두기 바랍니다. 그리고 for 반복문은 range 이외에도 시퀀스 객체를 사용할 수 있다는 점이 중요합니다.