2

さて、私はPythonで非常に多くの評価(10 ^(10 ^ 120)のオーダー)を投入しようとしていましたが、それは非常に巨大であることに気づきました。とにかく、それから私は10 ** 10**5と10**10**6に後退しました。2つの時差を確認すると、このやや奇妙な発見につながり、非効率と見なすことができました。

試してみると、 0.3秒40秒かかっcProfile.run("x=10**10**6")たことがわかりました。cProfile.run("print 10**10**6")

それから私はほとんど時間がかからなかったのを試しましたが、その後私が解釈するx= 10**10**6たびに(続いてEnter)それは本当に長い時間がかかります(私は40代だと思います)。ですから、私が解釈するたびに、それが全体の値をもう一度計算すると仮定しています。 xxx

だから私の質問は:それは非常に非効率的ではないですか?モジュールでいくつかの変数を宣言したとしましょう。x= 10**10そして、参照するたびにx、Pythonインタープリターは何度も何度もの値を計算します10**10か?

ゴーリーの詳細をいただければ幸いです。

4

2 に答える 2

10

Pythonはバイナリを使用して非常に大きな数を計算できますが、それを表示可能な数字に戻すのは大変な作業です。

例:(そしてかなりの数のオイラープロジェクトが求めるもの)-

たとえば、のすべての桁の合計は何ですか2 ** 32768

Pythonは、BigNumを使用して、その結果を数値として計算できますが、計算するとすぐに次のようになります。

sum(int(c) for c in str(my_big_number)) # ouch - that's a lot of digits to produce and store

つまり、変数名を入力(次にEnterキーを押す)/変数名を出力すると、変換が実行されます。

于 2012-07-06T22:12:45.090 に答える
7

印刷するたびに値が再計算されるわけではありません。表示される長い遅延は、表示用に大きな数値を文字列に変換するコストです。

于 2012-07-06T22:14:38.737 に答える