티스토리 뷰

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까지의 값을 그때 그때 생성해서 값을 가져오는 형식입니다.

'Programing-Language > Python' 카테고리의 다른 글

python console 지우기  (2) 2018.02.12
Python None  (0) 2018.01.07
python virtualenv 윈도우 설치/사용  (0) 2017.11.19
Python 삼항 연산자  (0) 2017.11.17
얕은 복사와 깊은 복사(deep copy)  (0) 2017.09.23
댓글