Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 역방향(거꾸로) 반복 처리하는 방법 완벽 가이드

이 튜토리얼에서는 Python 프로그램에서 역방향 반복(backward iteration)을 수행하는 방법을 알아봅니다. 대부분의 경우 우리는 정방향 반복을 사용하지만, 역방향 반복 방법을 알고 있으면 리스트를 뒤집어서 처리하거나 카운트다운을 구현할 때 등 다양한 상황에서 큰 도움이 됩니다.

Python에서 역방향 반복을 구현하는 대표적인 방법은 range() 함수를 활용하는 것입니다. 먼저 range() 함수의 기본 개념부터 살펴보겠습니다.

range() 함수란?

range() 함수는 숫자 시퀀스를 생성하는 데 널리 사용되는 내장 함수입니다. 숫자뿐만 아니라 다양한 iterable과 함께 활용할 수 있으며, 여기서는 숫자 기반의 반복에 초점을 맞추겠습니다.

range() 함수는 최대 세 개의 인자를 받으며, 인자 개수에 따라 다음과 같이 동작합니다.

  • 인자가 1개인 경우: 해당 값을 상한(upper bound)으로 사용하고, 하한(lower bound)은 0, 증가값(step)은 1이 기본값으로 설정됩니다.

  • 인자가 2개인 경우: 첫 번째 인자는 하한, 두 번째 인자는 상한으로 사용되며, 증가값은 1이 기본값입니다.

  • 인자가 3개인 경우: 첫 번째 인자는 하한, 두 번째 인자는 상한, 세 번째 인자는 증가값(증감 폭)으로 사용됩니다.

역방향 반복을 위해서는 이 중 세 개의 인자를 모두 사용하며, 특히 증가값에 음수를 지정하는 것이 핵심입니다.

역방향 반복 예제

예제 1: 10부터 0까지 거꾸로 출력하기

# 10부터 0까지 반복하는 루프
# range(하한, 상한, 증가값)
for i in range(10, -1, -1):
    # 값 출력
    print(i)

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

10
9
8
7
6
5
4
3
2
1
0

여기서 주목할 점은 상한 값인 -1입니다. range() 함수는 상한 값을 포함하지 않기 때문에, 0까지 출력하려면 상한을 -1로 지정해야 합니다. 또한 증가값을 -1로 설정하여 매번 1씩 감소하도록 만들었습니다.

예제 2: 리스트(iterable)를 역방향으로 순회하기

range() 함수와 len() 함수를 조합하면 리스트 같은 iterable 객체도 손쉽게 뒤에서부터 순회할 수 있습니다.

# 리스트 초기화
nums = ['Hafeez', 'Aslan', 'Kareem']
# 리스트의 마지막 요소부터 출력하는 루프
for i in range(len(nums) - 1, -1, -1):
    # 리스트 요소 출력
    print(nums[i])

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Kareem
Aslan
Hafeez

len(nums) - 1은 리스트의 마지막 인덱스를 의미하며, 이를 시작점으로 삼아 인덱스 0까지 역순으로 접근합니다.

추가 팁: reversed() 함수 활용하기

역방향 반복에는 reversed() 내장 함수를 사용하는 더 간결한 방법도 있습니다.

nums = ['Hafeez', 'Aslan', 'Kareem']
for item in reversed(nums):
    print(item)

reversed()는 원본 리스트를 변경하지 않고 역순 이터레이터를 반환하므로, 단순히 순서만 뒤집어 순회할 때는 이 방법이 더 파이썬다운(Pythonic) 코드로 평가받습니다. 반면 인덱스 제어가 필요하거나 일정 간격씩 건너뛰며 역방향 순회해야 할 때는 range() 함수가 더 유용합니다.

마무리

지금까지 Python에서 range() 함수를 활용해 역방향 반복을 구현하는 방법을 살펴보았습니다. 핵심은 증가값에 음수를 지정하고, range()의 상한 값은 포함되지 않는다는 점을 기억하는 것입니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 질문해 주세요.