2014-12-04 102 views
-1
s=s+'a' 
s+='a' 
s.append(a) 

以上三者有什麼區別嗎?哪個更快s + ='a'或s = s +'a'python

我對這些選擇感到困惑。

哪個需要在什麼時候使用,並且是字符串append比其他的更快?

+1

第二個實際上適合你嗎? – 2014-12-04 06:10:02

+1

不知道什麼是什麼,它將不可能回答任何事情。另外,第二個例子是一個語法錯誤。 – 2014-12-04 06:13:36

+2

你不能在一個字符串上執行's.append(a)'。 – Marcin 2014-12-04 06:14:29

回答

2

假設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()方法。

3

簡答:都不。這就像問哪個勺子喂得更快?銀或塑料?也不取決於使用它的人。

換句話說,這不適用於一種語言。一種語言只是談論語法和語義,而不談論速度,即它指定表達某種東西及其語法的方式,而不是表達速度。

速度是參數implementation而不是language;知道區別。一個實現可以同時在s += 'a's = s + 'a'之間(因此這兩個實現之間沒有區別),但另一個實現可以在另一個實現上更快地實現。因此,在談論速度/效率/性能時,指定正在使用的實現,平臺,編譯器等是至關重要的。

CPythonIronPython等都是Python language的實現,他們再次在執行這樣的表達式速度可能會因編譯器,平臺等措施,不要猜測!

1

你總是可以運行自己的測試時間,並檢查:

import timeit 

print(timeit.timeit("s=''; s+='a'", number=10000)) 
print(timeit.timeit("s=''; s=s+'a'", number=10000)) 

均可以得到類似的結果:

0.000557306000700919 
0.0005544929990719538 
+0

謝謝Marcin 但append() – 2014-12-04 06:45:17

+0

@TirupatiRao你不能對字符串執行'append'。 – Marcin 2014-12-04 06:49:55

+0

好的謝謝。 其他序列數據類型呢? – 2014-12-04 06:51:50

-2
s= s+'a' 

    s += 'a' 

    s.append(a) 

http://www.skymind.com/~ocrow/python_string/

s.append看看(a)其中更快。然後s需要是一個字符串列表。

+1

你不能對一個字符串執行'append'。那麼它如何能更快? – Marcin 2014-12-04 06:22:02

+0

沒有字符串附加方法。它是一個列表追加方法,在你給出的鏈接中,然後使用字符串的連接方法形成一個字符串 – thiruvenkadam 2014-12-04 06:29:44

+0

是的,我們不能。(): 對於xrange(loop_count)中的num,def method4(): str_list = [] : str_list.append('num') return''.join(str_list) – 2014-12-04 06:29:56

相關問題