본문 바로가기

프로그래머/Python

[Python] range | generator의 방식을 활용하는 대표적 함수

ragne는 제너레이터의 방식을 활용하는 대표적인 함수이다.
주로 for 문에서 쓰이며 쓰임은 다음과 같다.

list(range(5))
# [0, 1, 2, 3, 4]

range(5)
# type(range(5))

type(range(5))
# <class 'range'>

for i in range(5):
    print(i, end= ' ')
# 0 1 2 3 4
a = [n for n in range(1000000)]
b = range(1000000)

len(a)
# 1000000
len(b)
# 1000000
len(a) == len(b)
# True

b
# range(0, 1000000)
type(b)
# <class 'range'>

sys.getsizeof(a)
# 8697464
sys.getsizeof(b)
# 48
  • 둘다 동일한 100만 개가 출력되며, 비교 연산자에서도 Treue를 리턴한다.
  • 그러나 a에는 이미 생성된 값이 담겨 있고, b는 생성해야 한다는 조건만 존재한다.
  • 둘 사이의 메모리 점유율을 비교해보면 range 클래스를 리턴하는 방식의 메모리 점유율이 훨씬 작다.
b[999]
# 999
  • 인덱스로 접근시 바로 생성된다.