728x90
[range 함수의 기본 사용법, 순차적인 숫자를 가지는 list를 생성하는 함수]
[xrange 함수의 기본 사용법, 순차적인 숫자를 만들 수 있는 generator를 생성하는 클래스]
숫자의 범위를 정의하거나 사용할 때 range() 나 xrange()를 사용하게 된다. 간단한 사용 예를 보면 다음과 같다.
>>> for x in range(5): ... print x ... 0 1 2 3 4
>>> for x in xrange(5): ... print x ... 0 1 2 3 4
간단한 사용법만 보면 range나 xrange나 그 용도는 별반 다른게 없어 보인다.
하지만 좀 더 깊게 보면 한가지 큰 차이점이 있는데, range의 경우 해당 api가 실행되는 순간 숫자 범위의 list를 바로 생성하는 반면 xrange의 경우 추후 필요시 생성할 수 있도록 generator만 만들어 놓는다는 것이다.
>>> range(5) [0, 1, 2, 3, 4] >>> xrange(5) xrange(5)
range 의 경우 필요없는 순간에 list를 만듬으로써 overhead가 발생하게 되고, 불필요한 메모리를 낭비하게 되는 반면 xrange의 경우 필요한 순간 필요한 숫자만 생성함으로써 resource 낭비를 줄일 수 있다.
작은 단위의 범위에서는 별다른 큰 성능의 차이가 없지만 아주 큰 범위의 숫자를 다루어야 할 경우 그 성능 차이는 눈에 띄게 발생한다.
특별한 경우가 아니라면 xrange를 사용하자
728x90
'Language > Python' 카테고리의 다른 글
[04-3] Python - Timezone 변경하기 (0) | 2017.01.02 |
---|---|
[02-7] Python - 집합 (세트, Sets) (0) | 2016.12.31 |
[02-6] Python - 딕셔너리 (Dictionary) (0) | 2016.12.31 |
[04-2] Python - 논리연산자/비트연산자 (boolean/bitwise operation) (0) | 2016.12.30 |
[03-2] Python - for (반복문, Loops) (0) | 2016.08.11 |
[02-4] Python - 리스트 (Lists) (0) | 2016.08.09 |
[02-1] Python - 변수 할당의 개념 (0) | 2016.08.08 |
[02-3] Python - 문자열 (Strings) (0) | 2016.08.08 |