Maison > développement back-end > Tutoriel Python > Pourquoi « 1015 in range(1015 1) » est-il si rapide dans Python 3 ?

Pourquoi « 1015 in range(1015 1) » est-il si rapide dans Python 3 ?

DDD
Libérer: 2024-12-13 19:19:11
original
851 Les gens l'ont consulté

Why is `1015 in range(1015   1)` so fast in Python 3?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal