2016-04-30 14 views
0

私はPythonで文字列を反転させる2つの方法を考え出すことができました。一般的なscenceはコードの行数が多いほど遅くなりますので、次のコード行を作成しました。Pythonの文字列を逆順にする最速の方法

CODE1

"".join(reversed(map(lambda x:x,st))) 

CODE2

st[::-1] 

これらは私に似た性能を与える傾向があるが、私はそれが3倍以上の操作を実行して第一1が遅いアプローチすべきだと思います。 しかし、長い文字列が20000の場合でも、一見すると明らかにされていないパフォーマンスのmsの差さえも見ることができません。

+0

どのようにこれら2つの時間を過ごしましたか?私は20,000文字の文字列に対して妥当な結果を得ています:https://i.imgur.com/DhKaxhR.png – Blender

+2

最初のケースでは '' '.join(逆順(st)) 'を使用しなかった理由はありますか? – Cyb3rFly3r

+0

私は、コードの開始時にtime.now()を使用し、終了時にtime.now()を使用してベンチマークを行いました。 Cyb3rFly3r @ :それは、効率的なアルゴを考え出すについてではなかったが、これらの二つのうちの一つが '以上である私の心 –

答えて

5

違いがあります。

まず、map(lambda x: x, st)とは何ですか?目的は何ですか?

あなたのコードをテストするためにtimeitモジュールを使用します。

$ python -m timeit '"".join(reversed("abcdefghijklmnopqrstuvwxyz"))' 
1000000 loops, best of 3: 0.586 usec per loop 
$ python -m timeit '"abcdefghijklmnopqrstuvwxyz"[::-1]'   
10000000 loops, best of 3: 0.0715 usec per loop 

あなたが見ることができるように、スライスは、この特定の入力のために速く私のマシン上〜8倍です。それはまた、より簡潔です。

+0

をcorssなかった 速くしかし、ええ'「」.join()(ST逆)になるかを確認します私の期待に沿って。 Pythonコミュニティでは、メソッド2が文字列を逆転させるのに他のどのメソッドよりも速いことが知られています。 – Cyb3rFly3r

+0

"" .joinは実際には効率が悪いです...逆転するのとは対照的に、これは複数の動作を行います。 –

関連する問題