Différence entre range et xrange en Python

Les deux fonctions range() et xrange() peuvent être utilisées pour itérer un certain nombre de fois dans des boucles for en Python. Dans Python 3, il n’existe pas xrange, mais la fonction range se comporte comme xrange dans Python 2. Si vous voulez écrire du code qui s’exécutera à la fois sur Python 2 et Python 3, vous devez utiliser range().
 
 

Type de retour

La différence entre range et xrange réside dans le fait que la fonction range renvoie une liste, alors que xrange renvoie un objet.

r = range(1,10000) 

print ("Le type de retour de range() est : ") 
print (type(r)) 

xr = xrange(1,10000) 

print ("Le type de retour de xrange() est : ") 
print (type(xr))

Cela produit le résultat suivant:

Le type de retour de range() est :
<type 'list'>
Le type de retour de xrange() est :
<type 'xrange'>

 

Mémoire

La variable stockant la plage créée par range() utilise plus de mémoire que la variable stockant la plage utilisant xrange(). La raison principale en est que le type de retour de range() est list et xrange() est un objet.

import sys 

r = range(1,10000) 

print ("La memoire attribuee en utilisant range() est : ") 
print (sys.getsizeof(r)) 
  
xr = xrange(1,10000) 

print ("La memoire attribuee en utilisant xrange() est : ") 
print (sys.getsizeof(xr))

Cela produit le résultat suivant:

La memoire attribuee en utilisant range() est :
80064
La memoire attribuee en utilisant xrange() est :
40

 

La vitesse

Du fait que xrange() n’évalue qu’un objet contenant uniquement les valeurs requises par l’évaluation, sa mise en oeuvre est donc plus rapide en implémentation que range().
 

Conclusion
  • Si vous souhaitez écrire du code qui s’exécutera à la fois sur Python 2 et Python 3, utilisez range(), car la fonction xrange est obsolète en Python 3.
  • range() est plus rapide si vous effectuez plusieurs itérations sur la même séquence.
  • xrange() doit reconstruire l’objet à chaque fois, mais range() a des vrais objets. (Pourtant, sa performance sera toujours pire en termes de mémoire)

 
QCM Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *