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
- 인덱스로 접근시 바로 생성된다.
'프로그래머 > Python' 카테고리의 다른 글
[Python] 파이썬 문법 - is 와 ==의 차이 | python is & == (0) | 2021.02.01 |
---|---|
[Python] print | .join() | f-string (0) | 2021.01.31 |
[파이썬] 타입 힌트 | Type Hint | PEP 484 (0) | 2021.01.31 |
[selenium] “Element Is Not Clickable at Point” 해결법 | 팝업창 전환 (0) | 2021.01.15 |
[윤성우의 열혈 파이썬 중급편] 34. __name __ & __main __ (0) | 2020.12.24 |