logo

Python의 range() 대 xrange()

range()와 xrange()는 특정 횟수만큼 반복하는 데 사용할 수 있는 두 가지 함수입니다. ~을 위한 Python의 루프. ~ 안에 파이썬3 , xrange는 없지만 range 함수는 Python2의 xrange처럼 동작합니다. Python2와 Python3 모두에서 실행되는 코드를 작성하려면 range()를 사용해야 합니다. 둘 다 서로 다른 방식으로 구현되며 서로 다른 특성을 가지고 있습니다. 비교 포인트는 다음과 같습니다.

  • 반환 유형
  • 메모리
  • 작업 사용법
  • 속도

Python range() 함수

그만큼 Python range() 함수 주어진 범위에서 일련의 숫자를 반환합니다. 가장 일반적인 용도는 Python 루프를 사용하여 숫자 시퀀스에서 시퀀스를 반복하는 것입니다.

Python xrange() 함수

Python의 xrange() 함수는 Python range() 함수와 유사하게 일련의 숫자를 생성하는 데 사용됩니다. Python xrange()는 Python 2.x에서만 사용되는 반면 Python의 range() 함수는 Python 3.x에서 사용됩니다.

range()와 xrange()의 반환 유형

이것 xrange() 함수는 다음을 반환합니다. 생성기 개체 반복을 통해서만 숫자를 표시하는 데 사용할 수 있습니다. 요청 시 유일한 특정 범위가 표시되므로 호출됩니다. 게으른 평가 , 반면 Python range() 함수는 범위 객체(반복 가능 유형)를 반환합니다.

파이썬3




# initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the type of a> print>(>'The return type of range() is : '>)> print>(>type>(a))> # testing the type of x> print>(>'The return type of xrange() is : '>)> print>(>type>(x))>

>

.06을 분수로
>

산출:

The return type of range() is :   The return type of xrange() is :>

xrange() 및 range() 함수의 속도

을 저장하는 변수 범위 range()에 의해 생성됨 더 많은 메모리를 차지합니다 xrange()를 사용하여 범위를 저장하는 변수와 비교됩니다. 이에 대한 기본적인 이유는 range()의 반환 유형이 목록이고 xrange()가 xrange() 객체이기 때문입니다.

파이썬3




import> sys> # initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the size of a> # range() takes more memory> print> (>'The size allotted using range() is : '>)> print> (sys.getsizeof(a))> # testing the size of x> # xrange() takes less memory> print> (>'The size allotted using xrange() is : '>)> print> (sys.getsizeof(x))>

CSS를 사용하여 밑줄
>

>

산출:

The size allotted using range() is :  80064 The size allotted using xrange() is :  40>

xrange() 및 range() 함수 사용법

range()는 목록, 즉 모든 작업을 반환합니다. ~할 수 있다 목록에 적용하여 사용할 수 있습니다. 반면에 xrange()는 xrange 객체를 반환하므로 목록과 관련된 작업은 할 수 없다 적용되므로 단점이 있습니다.

파이썬3




# initializing a with range()> a>=> range>(>1>,>6>)> # initializing a with xrange()> x>=> xrange>(>1>,>6>)> # testing usage of slice operation on range()> # prints without error> print> (>'The list after slicing using range is : '>)> print> (a[>2>:>5>])> # testing usage of slice operation on xrange()> # raises error> print> (>'The list after slicing using xrange is : '>)> print> (x[>2>:>5>])>

>

char을 문자열로 변환 java

>

오류:

Traceback (most recent call last):  File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in   print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>

산출:

The list after slicing using range is :  [3, 4, 5] The list after slicing using xrange is :>

Python에서 range()와 xrange()의 차이점

xrange()는 지연 평가에 필요한 값만 포함하는 생성기 객체만 평가하므로 다음과 같습니다. 더 빠르게 range()보다 구현 중입니다.

중요한 사항:

  • Python 2와 Python 3 모두에서 실행되는 코드를 작성하려면 Python 3에서는 xrange 함수가 더 이상 사용되지 않으므로 range()를 사용하세요.
  • range()는 동일한 시퀀스를 여러 번 반복하는 경우 더 빠릅니다.
  • xrange()는 매번 정수 객체를 재구성해야 하지만 range()는 실제 정수 객체를 갖습니다. (그러나 메모리 측면에서는 항상 더 나쁜 성능을 발휘합니다)

범위()

xrange()

정수 목록을 반환합니다. 생성기 객체를 반환합니다.
실행 속도가 느려집니다. 실행 속도가 더 빠릅니다.
전체 요소 목록을 메모리에 유지하므로 더 많은 메모리를 사용합니다. 한 번에 하나의 요소만 메모리에 유지하므로 메모리를 덜 차지합니다.
모든 산술 연산은 목록을 반환하므로 수행할 수 있습니다. 이러한 작업은 xrange()에서 수행할 수 없습니다.
Python 3에서는 xrange()가 지원되지 않습니다. Python 2에서는 for 루프를 반복하는 데 xrange()가 사용됩니다.