Pourquoi Quadrillion in Range (Quadrillion 1) est-il rapide dans Python 3 ?
Question :
La fonction range() de Python 3 est un objet de type générateur qui produit des valeurs à la demande. Compte tenu de cela, on pourrait s'attendre à ce que la recherche d'un quadrillion dans la plage (1 quadrillion 1) prenne beaucoup de temps, car il faudrait générer des valeurs d'un quadrillion. Cependant, cette opération est étonnamment rapide. Pourquoi ?
Réponse :
L'objet range() dans Python 3 est une séquence intelligente qui ne produit pas immédiatement ses éléments. Il ne contient que les valeurs de début, d'arrêt et de pas, et calcule le prochain entier à la demande pendant l'itération.
Essentiellement, range() implémente le hook contient, qui détermine efficacement si un élément donné le nombre se situe dans la plage. Ce calcul est une opération à temps (presque) constant, donc l'objet n'a pas besoin d'analyser toutes les valeurs possibles dans la plage.
Contrairement à une liste de toutes les valeurs de la plage, qui entraînerait une recherche linéaire, la plage () calcule l'appartenance en temps O (log N), où N est le nombre d'éléments dans la plage. Cette optimisation est rendue possible par la nature illimitée des entiers Python et leur gestion efficace dans du code C optimisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!