<개인공부>/[Python]

[Python] 파이썬 range()의 숨겨진 기능들

BlockDMask 2025. 4. 5. 09:18
반응형

안녕하세요. BlockDMask 입니다.

오늘은 파이썬에서 반복문과 함께 자주 쓰이는 range() 함수의 숨겨진 기능들을 소개하겠습니다.

보통은 단순히 숫자를 반복할 때 쓰지만,
step을 음수로 주거나, reversed(), len() 없이 슬라이스처럼 다루는 등
알아두면 실전에서 유용한 기능들이 꽤 많습니다.



1. 기본적인 range() 사용법

for i in range(5):
    print(i)

출력:
0
1
2
3
4

  • 기본적으로 0부터 시작하며, 끝 숫자는 포함하지 않습니다.
  • 문법: range(start, stop, step)



2. 시작 값과 step 지정

for i in range(1, 6, 2):
    print(i)

출력:
1
3
5

1부터 시작해서 2씩 증가하며 6 미만까지 반복합니다.



3. step을 음수로 주기 (역순 반복)

for i in range(5, 0, -1):
    print(i)

출력:
5
4
3
2
1

역순 반복할 때 매우 유용합니다.
주의: start > stop일 경우 step을 음수로 주어야 반복이 실행됩니다.



4. 큰 범위 처리 시 메모리 걱정은?

r = range(0, 1000000000)
print(type(r))  # <class 'range'>
  • range()리스트가 아닙니다.
  • 실제로 값을 모두 저장하지 않고, 필요할 때마다 생성하는 이터러블입니다.
print(r[100])     # 100번째 값
print(r[-1])      # 마지막 값

슬라이싱처럼 인덱스로 접근 가능하지만, 리스트 전체를 생성하지 않기 때문에 효율적입니다.



5. reversed(range()) 사용법

for i in reversed(range(1, 6)):
    print(i)

출력:
5
4
3
2
1

range(5, 0, -1)과 동일한 결과를 reversed()를 사용하여 가독성 있게 표현할 수 있습니다.



6. range 객체는 리스트가 아니다

r = range(3)
print(r)         # range(0, 3)
print(list(r))   # [0, 1, 2]

range() 자체는 리스트가 아니라 range 객체입니다.
리스트처럼 사용하려면 list()로 변환해야 합니다.



7. range에 len() 사용 가능

r = range(100, 200, 10)
print(len(r))  # 10

range 객체는 리스트처럼 len()으로 개수 확인이 가능합니다.



8. 정수 반복 외에도 응용 가능

data = ['BlockDMask', 'Python', 'Coding']
for i in range(len(data)):
    print(i, data[i])

또는 더 깔끔하게:

for i, val in enumerate(data):
    print(i, val)



결론

  • range(start, stop, step)step을 음수로도 줄 수 있습니다.
  • reversed(range())는 가독성이 좋고, 역순 반복에 유용합니다.
  • range()는 메모리를 거의 사용하지 않는 이터러블 객체입니다.
  • list(), len(), 인덱싱 등 다양한 기능과 함께 사용할 수 있습니다.

 

이상, 파이썬 range()의 숨겨진 기능들에 대해 예제 중심으로 정리해보았습니다.
오늘도 읽어주셔서 감사합니다.

참조할 이전글 : 2021.05.01 - [<개인공부>/[Python]] - [python] 파이썬 range 함수 정리 및 예제 (숫자 구하기)

반응형