파이썬에서 숫자로 일정구간을 반복하기 위해서,
range()와 xrange() 함수를 제공한다.
동작에는 차이가 없지만, 세부적으로 range()는 리스트 객체를 반환하고,
xrange()는 xrange 객체를 반환한다.
range()는 리스트 객체를 생성하여 반환하기 때문에 숫자가 커질수록 메모리 사용량이 많다.
xrange()가 반환하는 xrange 타입은 제네레이터이다. 따라서 필요할 때 숫자를 생성하기 때문에 메모리 사용량은 일정하다.
* 모바일 환경이나 메모리가 제한적인 상황에서는 xrange()를 사용하고,
만약 배열을 여러번 순환해야 한다면 range()를 사용하는 것이 더 좋을 것이다.
사용방법은 다음과 같다.
#!/bin/python
# -*- coding:utf-8 -*-
def range_sample():
# 1 ~ 10 까지 반복
for num in range(1, 10):
print num, ' ',
# 0 ~ 10 까지 반복
for num in range(10):
print num, ' ',
# 1 ~ 10 까지 음수 반복
for num in range(1, 10, 2):
print num, ' ',
# 10 ~ 1 까지 반복
for num in range(10, 0, -1):
print num, ' ',
def xrange_sample():
# 1 ~ 10 까지 반복
for num in xrange(1, 10):
print num, ' ',
# 0 ~ 10 까지 반복
for num in xrange(10):
print num, ' ',
def compare_type():
print type(range(10))
print type(xrange(10))
if __name__ == "__main__":
print '-'*10, 'range_sample', '-'*10
range_sample()
print '\n', '-'*10, 'xrange_sample', '-'*10
xrange_sample()
print '\n', '-'*10, 'compare_type', '-'*10
compare_type()
https://docs.python.org/2/library/functions.html#range
http://pythoncentral.io/how-to-use-pythons-xrange-and-range/
'python' 카테고리의 다른 글
[python] GIL(Global Interpreter Lock) (0) | 2017.11.21 |
---|---|
[python] 문자열을 효율적으로 concat 하는 방법 (0) | 2017.02.22 |
[python][error] 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UX 오류 수정 (0) | 2017.01.23 |
[python][error] PermissionError: [Errno 13] Permission denied: ... (1) | 2017.01.23 |
[python] yield 커맨드(iterable, generator) (0) | 2016.12.16 |