2011-03-08 89 views

回答

7

字符串連接是直接的

a = "A" 
b = "B" 
c = a + b 
print c 

> AB 

我爲基準的三個操作,每個執行1m:

c = a + b 
c = '%s%s' % (a,b) 
c = "{0}{1}".format(a, b) 

並且結果s是:

+: 0.232225275772 
%s: 0.42436670365 
{}: 0.683854960343 

即使有500個字符串,+仍然是目前爲止最快的。我script is on ideone和結果(500名字符的字符串)是:

+: 0.82 
%s: 1.54 
{}: 2.03 
+0

而且我總是認爲字符串與+符號串聯緩慢。也許是因爲琴絃太短? – 2011-03-08 22:42:04

+0

也許,我已經將腳本上傳到了Ideone,結果更加明顯:http://ideone.com/a6JMi – fredley 2011-03-08 22:46:13

+0

我不知道.format方法比格式化的%方法慢。我認爲.format是首選的方法。它一直比較慢嗎? – Curious2learn 2011-03-09 02:57:46

2

你可以用最簡單的版本:String3 = String1 + String2或格式化操作(在python3不建議使用):String3 = '%s%s' % (String1, String2)

+0

因爲它明確標記爲python-3.x我會刪除第二個選項。 – fredley 2011-03-08 22:22:19

+2

@fredley,我讀過%不會很快被刪除。在新的Python 3.2中它保持不變。 – joaquin 2011-03-08 22:24:50

+2

對於Python 3,可以使用'String3 =「{0} {1}」.format(String1,String2)'。 – 2011-03-08 22:28:41

2

在Python中,+運算符連接字符串:

>>> String3 = String1 + String2 
>>> String3 
    'AB' 

這是最簡單的方法,通常它是正確的選擇。但是,有時您可能需要更多efficient string concatenation

0

您也可以嘗試str.join():

>>>s1='a' 
>>>s2='b' 
>>>s3=''.join((s1,s2)) 
>>>s3 
'ab' 

,如果你還寫:

>>>s3='WhatEver'.join((s1,s2)) 
>>>s3 
'aWhatEverb' 
0

爲了簡單起見,當速度並不重要,你不能擊敗的難易程度c=a+b。如果速度很重要(例如,因爲您正在進行大量的連續級聯),則可以使用str.join()can be a little more efficient (code at ideone)

+: 2.51 

''.join([a,...z]): 0.2 

append(): 2.05 

從我可以告訴,如果你不碰中間產品製造連續級聯,我最好每次追加除了列表,然後立刻加入了一切。對於單個級聯情況,a+b仍然快於a.join(b)

相關問題