Programing-Language/Python
range,xrange
Loweeeell
2017. 9. 18. 23:46
Python에서 for문을 사용하실때 range를 많이 사용하실텐데요.
Python3에서는 range가 하나밖에 없지만 Python2에서는 range,xrange 가 있습니다.
Python2 range는 list형식으로, for i in range(10) 이면
for i in [0,1,2,3,4,5,6,7,8,9]
대충 이런식의 형태로 for문이 실행된다고 보시면 되는데요
리스트로 할당이 되기때문에 만약 매우 큰 범위를 선언하시게 된다면 메모리를 많이 사용하게됩니다.
xrange는 리스트형식으로 되는 것이 아닌 검색이 요청되는 시점에 값을 계산하게 됩니다.(generator)
그렇기때문에 Python2에서는 range보다는 xrange를 사용하기를 권장합니다.
매우 큰 범위를 선언할땐 더더욱이요 ㅎㅎ
Python3에서는 range가 없어지고 xrange가 range라는 이름으로 바뀌었습니다.
# range, myrange
def myrange(start=0, end=0, step=1):
mylist = []
while start < end:
mylist.append(start)
start += step
return mylist
def myxrange(start=0, end=0, step=1): # cotutine
while start < end:
yield start # generator
start += step
if __name__ == "__main__":
for i in myrange(end=10):
print(i)
for i in myxrange(end=10):
print(i)
실제 range,xrange의 구조를 만든건데,myrange(range)는 start부터 end까지의 수를 리스트에 할당한 후, 값을 가져오는형식이고
myxrange(xrange)는 generator를 사용해 start부터 end까지의 값을 그때 그때 생성해서 값을 가져오는 형식입니다.