최근에 Python3을 사용하기 시작했으며 xrange 상처가 부족합니다.
간단한 예 :
1) 파이썬 2 :
from time import time as t
def count():
st = t()
[x for x in xrange(10000000) if x%4 == 0]
et = t()
print et-st
count()
2) 파이썬 3 :
from time import time as t
def xrange(x):
return iter(range(x))
def count():
st = t()
[x for x in xrange(10000000) if x%4 == 0]
et = t()
print (et-st)
count()
결과는 각각 다음과 같습니다.
1) 1.53888392448 2) 3.215819835662842
왜 그런 겁니까? 왜 xrange가 제거 되었습니까? 배우기에 훌륭한 도구입니다. 우리 모두가 어느 시점에 있었던 것처럼, 나처럼 초보자도. 왜 제거해야합니까? 누군가가 올바른 PEP를 알려줄 수 있습니까? 찾을 수 없습니다.
건배.
time
. 사용하기 쉽고 잘못하기가 더 어려워지고 테스트를 반복하는 것 외에도 timeit
기억하지 못하거나 모든 방법을 알고 (GC를 사용하지 않도록 설정하는 것과 같이) 돌보는 방법을 알고, 수천 배 더 나은 해상도로 시계.
range
에를 x%4 == 0
? 왜 테스트 list(xrange())
대 list(range())
합니까? 가능한 한 외부 작업이 적습니까? (예를 들어, 3.x가 x%4
더 느리게 수행되지 않는다는 것을 어떻게 알 수 있습니까?) 그 문제에 대해 왜 list
많은 메모리 할당을 포함하는 거대한을 구축하고 있습니까 (느린 것 외에도 놀랍도록 가변적입니다) ?
iter(range)
중복됩니다.
list(range(..))
. 그것은 파이썬 2의 범위와 같습니다. 또는 다른 말로하면 : xrange는 더 나은 기본값이기 때문에 range로 이름이 바뀌 었습니다. 둘 다 가질 필요는 없었습니다 list(range)
. 정말로 목록이 필요한 경우 수행 하십시오. .
range
Python 3.x는xrange
Python 2.x에서 가져온 것입니다. 실제로 파이썬 2.xrange
가 제거되었습니다.