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
948 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!

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