프로그래밍을 하다 보면 리스트의 요소를 뒤에서부터 앞으로 순회해야 하는 경우가 종종 있습니다. 즉, 마지막 요소부터 시작하여 그 앞 요소들을 차례대로 읽고, 인덱스 0에 해당하는 첫 번째 요소까지 처리하는 것이죠. Python은 이러한 역방향 반복을 구현할 수 있는 다양한 기능을 제공합니다. 이 글에서는 대표적인 세 가지 방법을 예제와 함께 살펴보겠습니다.
1. range() 함수 활용하기
range() 함수는 보통 순방향 반복에 사용되지만, 시작 값을 마지막 인덱스로 지정하고 스텝을 -1로 설정하면 역방향 반복이 가능합니다. 아래 예제에서는 리스트의 길이에서 1을 뺀 값(마지막 인덱스)부터 시작하여 -1씩 감소시키면서 인덱스 0까지 순회합니다.
예제
list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in range(len(list) - 1, -1, -1):
print(list[i])실행 결과
Thu Wed Tue Mon
2. 슬라이싱 [::-1] 활용하기
리스트 슬라이싱 문법인 [::-1]을 사용하면 리스트 전체를 뒤집은 새로운 시퀀스를 얻을 수 있습니다. 이는 시작 위치를 끝에서부터 거꾸로 첫 번째 위치까지 진행하겠다는 의미입니다. for 반복문과 함께 사용하면 각 요소를 역순으로 손쉽게 순회할 수 있습니다.
예제
list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in list[::-1]:
print(i)실행 결과
Thu Wed Tue Mon
3. reversed() 함수 활용하기
reversed() 함수는 가장 직관적이고 간결한 방법입니다. 별도의 인덱스 계산 없이 내장 함수 하나만으로 리스트의 요소들을 역순으로 순회할 수 있는 반복자(iterator)를 반환합니다.
예제
list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in reversed(list):
print(i)실행 결과
Thu Wed Tue Mon
마무리
세 가지 방법 모두 동일한 결과를 출력하지만, 상황에 따라 적합한 선택이 달라질 수 있습니다. 인덱스가 필요하다면 range(), 원본 리스트를 유지하면서 뒤집힌 복사본이 필요하다면 슬라이싱 [::-1], 메모리 효율성과 가독성이 중요하다면 reversed()를 사용하는 것이 좋습니다. 참고로 reversed()는 새로운 리스트를 생성하지 않고 반복자를 반환하므로, 큰 리스트를 다룰 때 특히 유용합니다.