6
我有一個像 這樣的列表我想要一個像'abc'的字符串。所以實際上結果是l[0]+l[1]+l[2]
,也可被軟件寫爲連接列表元素
s = ''
for i in l:
s += i
是否有什麼辦法可以更優雅做到這一點?
我有一個像 這樣的列表我想要一個像'abc'的字符串。所以實際上結果是l[0]+l[1]+l[2]
,也可被軟件寫爲連接列表元素
s = ''
for i in l:
s += i
是否有什麼辦法可以更優雅做到這一點?
使用str.join()
:
s = ''.join(l)
在其上調用此字符串用作l
串之間的分隔符:
>>> l=['a', 'b', 'c']
>>> ''.join(l)
'abc'
>>> '-'.join(l)
'a-b-c'
>>> ' - spam ham and eggs - '.join(l)
'a - spam ham and eggs - b - spam ham and eggs - c'
使用str.join()
是不是連接的元素更快多一個接一個,因爲它必須爲每個連接創建一個新的字符串對象。 str.join()
只需創建一個新的字符串對象。
請注意,str.join()
將環回輸入序列兩次。一次計算輸出字符串需要多大,並再次構建它。作爲副作用,這意味着,使用列表中理解,而不是生成器表達式的是更快:
slower_gen_expr = ' - '.join('{}: {}'.format(key, value) for key, value in some_dict)
faster_list_comp = ' - '.join(['{}: {}'.format(key, value) for key, value in some_dict])
1 Q/A 25S相當困難的匹配偏移...... – 2013-05-13 12:44:31
忍者再次撞擊。 – 2013-05-13 12:44:52
一個很好的鏈接:http://stackoverflow.com/questions/3055477/how-slow-is-pythons-string-concatenation-vs-str-join我喜歡這個答案是如此詳細的一個真正的基本問題 – jamylak 2013-05-13 12:45:51