-2

私はPythonでいくつかの問題を抱えています。Python (topcoder、codeforces) を使用していくつかのプログラミング タスクを解決しています。そして時々私は何かを数える必要があります。例: 文字列などの部分文字列を数えます。そして、私が次のように数えるとき:

counter += 1

私のソリューションは、いくつかのテストで失敗します。これを調査したところ、私のコードは 200000 近くまでカウントする必要があることがわかりました。Python の数値はオブジェクトであることはわかっています。そして、この 200000 個のオブジェクトを作成しようとしている私のコードは、テスト時間の制限を超えています。あるタスクでは、アルゴリズムを最適化することができ、最終的に必要な追加は完全に少なくなりました。しかし、別のものでは不可能であり、多くの数値オブジェクトを作成する必要があるため、私のコードは失敗しました。私の主な言語は C# です。Python の数値を効率的に扱うにはどうすればよいでしょうか。

そこに同様の問題が見つからないので、質問しています。

4

1 に答える 1

3
$ python -m timeit 'counter = 0
> for _ in xrange(200000): counter += 1'
100 loops, best of 3: 9.25 msec per loop

10 ミリ秒未満で、テストに大きな違いが生じるでしょうか? 私はそうは思わない。

ほとんどの場合、counter += 1命令がボトルネックではありません。おそらく間違ったアルゴリズムを持っているか、間違った方法でアルゴリズムを実装しています。


の使用while:

$ python -m timeit 'counter = 0
> while counter < 200000: counter += 1'
100 loops, best of 3: 10.5 msec per loop
于 2013-06-25T07:23:37.423 に答える