2016-05-14 6 views
-2
a1 = 'a'*5 
a2 = ''.join(['a']*5) 

上記の2つの変数があるとします。どちらがより効率的か、より良い習慣を使用するのか不思議です。Python文字の乗算またはリストの乗算

ありがとうございます!

+3

リストラッパーとメソッド呼び出しを追加しないもの。 – TigerhawkT3

答えて

3

最初の方が明らかに優れています。実際の意図をより明確に表現しています。

ipython%timeit機能を使用して、のがより効率的であるかを調べるみましょう:

In [1]: %timeit a1 = 'a'*5 
10000000 loops, best of 3: 14.6 ns per loop 

In [2]: %timeit a1 = ''.join(['a']*5) 
1000000 loops, best of 3: 326 ns per loop 

In [3]: 326/14.6 
Out[3]: 22.328767123287673 

ので、20倍以上の倍率で、最初は私のマシン上で、高速です。もちろん、あなたの結果は変わるかもしれません。

ps。クロウズa1 = 'aaaaa'のすべての中で最良の選択かもしれません。

+0

あなたのプログラムを書いているときに「a」の数が分かっていれば、あなたの答え:はい。 – gboffi

2

私はどのような場合でも最初の1のために行くよ:

禅3:シンプルは、複雑なよりも優れています。

+0

この答えのメッセージに絶対に同意してください。コードセクションがパフォーマンスにとって重要でない限り、少し遅くても最も簡単な表現に固執してください。しかしながら、この場合、第2の方法は、不必要に複雑で遅い。 – Reti43