오늘 한 일
1. range() vs xrange()
1. range() vs xrange()
range() 및 xrange()는 Python 의 for 루프에서 특정 횟수만큼 반복하는 데 사용할 수 있는 두 가지 함수.
Python 3에는 xrange가 없지만 range 함수는 Python 2의 xrange처럼 작동.
Python 2와 Python 3 모두에서 실행되는 코드를 작성하려면 range()를 사용해야 함.
1_range()
범위 객체(이터러블 유형)를 반환.
2_xrange()
이 함수는 루프를 통해서만 숫자를 표시하는 데 사용할 수 있는 generator 개체를 반환.
유일한 특정 범위는 요청 시 표시되므로 " 지연 평가 "라고 합니다.
3_두 함수의 비교 포인트
1) 반환 유형
range()는 범위 객체를 반환.
xrange()는 – xrange() 객체를 반환.
# range() vs xrange() 비교
# 반환 타입 비교
# range() 예시
a = range(1,10000)
# xrange() 예시
x = xrange(1,10000)
# a를 print 해봤을 때
print ("The return type of range() is : ")
print (type(a))
# x를 print 해봤을 때
print ("The return type of xrange() is : ")
print (type(x))
결과
The return type of range() is :
<type 'list'>
The return type of xrange() is :
<type 'xrange'>
2) 메모리
range()에 의해 생성된 범위 를 저장 하는 변수는 xrange()를 사용하여 범위를 저장하는 변수에 비해 더 많은 메모리를 차지.
이에 대한 기본적인 이유는 range()의 반환 유형이 list이고 xrange()가 xrange() 객체이기 때문.
# range() vs xrange() 비교
# memory 비교
import sys
# range() 예시
a = range(1,10000)
# xrange() 예시
x = xrange(1,10000)
# a 크기 테스트
# range()가 더 많은 메모리 사용
print ("The size allotted using range() is : ")
print (sys.getsizeof(a))
# x 크기 테스트
# xrange()가 더 적은 메모리 사용
print ("The size allotted using xrange() is : ")
print (sys.getsizeof(x))
결과
The size allotted using range() is :
80064
The size allotted using xrange() is :
40
3) 운영 용도
range()는 목록을 반환하므로 목록에 적용 할 수 있는 모든 작업을 사용할 수 있음.
반면에 xrange()는 xrange 객체를 반환하기 때문에 list와 관련된 작업을 적용 할 수 없는 단점이 있음.
# range() vs xrange() 비교
# 운영 용도 비교
# initializing a with range()
a = range(1,6)
# initializing a with xrange()
x = xrange(1,6)
# range()를 사용하여 슬라이싱한 후의 목록 테스트
# 오류 없이 print 함
print ("The list after slicing using range is : ")
print (a[2:5])
# xrange()를 사용하여 슬라이싱한 후의 목록 테스트
# 오류를 발생
print ("The list after slicing using xrange is : ")
print (x[2:5])
오류(xrange())
Traceback (most recent call last):
File "1f2d94c59aea6aed795b05a19e44474d.py", line 18, in
print (x[2:5])
TypeError: sequence index must be integer, not 'slice'
결과(range())
The list after slicing using range is :
[3, 4, 5]
The list after slicing using xrange is :
4) 속도
xrange()는 지연 평가에 필요한 값만 포함하는 generator 객체만 평가하므로 range()보다 구현 이 더 빠름.
range() | xrange() |
정수목록을 반환 | generator 객체를 반환 |
실행 속도가 느림 | 실행 속도가 빠름 |
전체 요소 list를 메모리에 유지하기 때문에 많은 메모리 사용 | 한 번에 하나의 요소만 메모리에 유지하기 때문에 적은 메모리 사용 |
list를 반환하기 때문에 산술연산이 가능 | 산술 연산이 불가능 |
python3에서는 xrange() 지원 불가능 | python 2에서는 xrange()는 for 루프를 반복하는데 사용 |
참고 링크:
https://www.geeksforgeeks.org/range-vs-xrange-in-python/
range() vs xrange() in Python - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
230130 TIL (0) | 2023.01.31 |
---|---|
230129 TIL (0) | 2023.01.29 |
220127 TIL (0) | 2023.01.27 |
220126 TIL (0) | 2023.01.26 |
220125 TIL (0) | 2023.01.25 |
댓글 영역