s=s+'a'
s+='a'
s.append(a)
以上三者有什麼區別嗎?哪個更快s + ='a'或s = s +'a'python
我對這些選擇感到困惑。
哪個需要在什麼時候使用,並且是字符串append
比其他的更快?
s=s+'a'
s+='a'
s.append(a)
以上三者有什麼區別嗎?哪個更快s + ='a'或s = s +'a'python
我對這些選擇感到困惑。
哪個需要在什麼時候使用,並且是字符串append
比其他的更快?
假設s
是一個字符串,所需要的時間似乎是相同的:
$ python -m timeit 's="x"; s+="x"'
10000000 loops, best of 3: 0.0607 usec per loop
$ python -m timeit 's="x"; s=s+"x"'
10000000 loops, best of 3: 0.0607 usec per loop
此外,字符串對象到不具有append()
方法。
簡答:都不。這就像問哪個勺子喂得更快?銀或塑料?也不取決於使用它的人。
換句話說,這不適用於一種語言。一種語言只是談論語法和語義,而不談論速度,即它指定表達某種東西及其語法的方式,而不是表達速度。
速度是參數implementation而不是language;知道區別。一個實現可以同時在s += 'a'
和s = s + 'a'
之間(因此這兩個實現之間沒有區別),但另一個實現可以在另一個實現上更快地實現。因此,在談論速度/效率/性能時,指定正在使用的實現,平臺,編譯器等是至關重要的。
CPython,IronPython等都是Python language的實現,他們再次在執行這樣的表達式速度可能會因編譯器,平臺等措施,不要猜測!
你總是可以運行自己的測試時間,並檢查:
import timeit
print(timeit.timeit("s=''; s+='a'", number=10000))
print(timeit.timeit("s=''; s=s+'a'", number=10000))
均可以得到類似的結果:
0.000557306000700919
0.0005544929990719538
謝謝Marcin 但append() – 2014-12-04 06:45:17
@TirupatiRao你不能對字符串執行'append'。 – Marcin 2014-12-04 06:49:55
好的謝謝。 其他序列數據類型呢? – 2014-12-04 06:51:50
s= s+'a'
s += 'a'
s.append(a)
對http://www.skymind.com/~ocrow/python_string/
s.append看看(a)其中更快。然後s需要是一個字符串列表。
你不能對一個字符串執行'append'。那麼它如何能更快? – Marcin 2014-12-04 06:22:02
沒有字符串附加方法。它是一個列表追加方法,在你給出的鏈接中,然後使用字符串的連接方法形成一個字符串 – thiruvenkadam 2014-12-04 06:29:44
是的,我們不能。(): 對於xrange(loop_count)中的num,def method4(): str_list = [] : str_list.append('num') return''.join(str_list) – 2014-12-04 06:29:56
第二個實際上適合你嗎? – 2014-12-04 06:10:02
不知道什麼是什麼,它將不可能回答任何事情。另外,第二個例子是一個語法錯誤。 – 2014-12-04 06:13:36
你不能在一個字符串上執行's.append(a)'。 – Marcin 2014-12-04 06:14:29