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

Скажите, если бы у меня были две переменные выше. Просто интересно, какой из них эффективнее или лучше использовать.Символ Python умножить или перечислить умножить

Спасибо!

+3

Единица без дополнительного списка обертки и метода вызова. – TigerhawkT3

ответ

3

Первым, очевидно, является более совершенная практика - она ​​более четко выражает ваше фактическое намерение.

Давайте выясним, что более эффективно, используя ipython «s %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. Crouse a1 = 'aaaaa' может быть лучшим выбором.

+0

Re your p.s .: yes, если число 'a' известно, когда вы пишете свою программу ... – gboffi

2

Я пойду первым в любом случае:

Zen 3: Простой лучше, чем сложнее.

+0

Абсолютно согласен с сообщением этого ответа. Если раздел кода не критичен для производительности, придерживайтесь простейшего выражения, даже если оно может быть немного медленнее. Однако в этом случае второй метод является как ненужным, так и более медленным. – Reti43

Смежные вопросы