ホームページ >バックエンド開発 >Python チュートリアル >Python 3 では「1015 in range(1015 1)」がなぜそれほど速いのでしょうか?

Python 3 では「1015 in range(1015 1)」がなぜそれほど速いのでしょうか?

DDD
DDDオリジナル
2024-12-13 19:19:11853ブラウズ

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

Python 3 では Quadrillion in Range(Quadrillion 1) が速いのはなぜですか?

質問:

Python 3 の range() 関数は、値を生成するジェネレーターのようなオブジェクトです。 要求。これを考慮すると、1 京の値を生成する必要があるため、range(1 京 1) 内の 1 京のチェックには時間がかかることが予想されるかもしれません。しかし、この操作は驚くほど速いです。これはなぜですか?

答え:

Python 3 の range() オブジェクトは、要素をすぐに生成しないスマート シーケンスです。開始値、停止値、およびステップ値のみを保持し、反復中にオンデマンドで次の整数を計算します。

重要なことに、range() は contains フックを実装しており、指定された値かどうかを効率的に判断します。数値は範囲内にあります。この計算は (ほぼ) 一定時間の操作であるため、オブジェクトは範囲内のすべての可能な値をスキャンする必要はありません。

線形検索が発生する範囲内のすべての値のリストとは異なり、範囲() は O(log N) 時間でメンバーシップを計算します。ここで、N は範囲内の要素の数です。この最適化は、Python 整数の無制限な性質と、最適化された C コードでのそれらの効率的な処理によって可能になります。

以上がPython 3 では「1015 in range(1015 1)」がなぜそれほど速いのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。