xrange
>>> xrange(stop)
>>> xrange(start, stop[, step])
전달받은 인자를 바탕으로 순차적인 숫자를 만들 수 있는 generator를 생성한다.
기본적인 사용법은 [range 함수] 와 동일하다.
하지만 range 함수는 미리 숫자를 생성하여 list 형태로 메모리에 미리 올려 놓는 반면 xrange 함수는 실제로 사용을 요청받았을 때 숫자를 생성한다.
range 함수와는 다르게 불필요하게 메모리에 생성하지 않는다는 장점이 있다.
xrange 함수가 리턴하는 형태는 xrange type이다.
xrange type은 immutable sequence 로 일반적으로 반복문에 사용된다.
xrange type의 장점은 range와는 상관없이 xrange object 자체 크기만큼만 메모리를 사용한다는 점이다. (성능상의 이점은 없음)
__builtin__ module에 포함된 class 이다.
xrange 함수 사용 예)
>>> xrange(10) xrange(10) >>> xrange(1,10) xrange(1, 10) >>> xrange(1,10,2) xrange(1, 11, 2) >>> xrange(10,1,-2) xrange(10, 0, -2) >>> xrange(0) xrange(0)
step이 0일 경우
>>> xrange(1,10,0) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: xrange() arg 3 must not be zero
xrange가 반환하는 형식 확인
>>> type(xrange(10)) <type 'xrange'>
>>> help(xrange)
Help on class xrange in module __builtin__:
class xrange(object)
| xrange(stop) -> xrange object
| xrange(start, stop[, step]) -> xrange object
|
| Like range(), but instead of returning a list, returns an object that
| generates the numbers in the range on demand. For looping, this is
| slightly faster than range() and more memory efficient.
|
| Methods defined here:
|
| __getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
| __getitem__(...)
| x.__getitem__(y) <==> x[y]
|
| __iter__(...)
| x.__iter__() <==> iter(x)
|
| __len__(...)
| x.__len__() <==> len(x)
|
| __reduce__(...)
|
| __repr__(...)
| x.__repr__() <==> repr(x)
|
| __reversed__(...)
| Returns a reverse iterator.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
'Language > Python' 카테고리의 다른 글
Python - callable(), 호출 가능한 object 여부를 판단하는 함수 (0) | 2018.01.12 |
---|---|
Python - dir(), object의 속성(attribute) 목록을 보여주는 함수 (0) | 2018.01.12 |
Python - int(), 정수(integer)를 반환하는 클래스 (0) | 2018.01.04 |
Python - slice(), slicing하기 원하는 index를 정의하는 클래스 (0) | 2018.01.04 |
Python - range(), 순차적인 숫자를 가지는 list를 생성하는 함수 (0) | 2018.01.03 |
Python - float(), 실수(float)를 반환하는 클래스 (0) | 2018.01.02 |
Python - hasattr(), object의 속성(attribute) 존재를 확인하는 함수 (0) | 2018.01.02 |
Python - delattr(), object의 속성(attribute)을 제거하는 함수 (0) | 2018.01.02 |