python-字符串的join要比+操作效率高


python-字符串的join要比+操作效率高

代碼

#-*- coding: utf-8 -*- from time import time def plus_test(): t = time() s = '' for i in xrange(1000000): s += 'test' print(time() - t) def join_test(): t = time() li = [] for i in xrange(1000000): li.append('test') s = ''.join(li) print(time() - t) plus_test() join_test()

數據

函數 運行時間
plus_test() 1.06100010872
join_test() 0.110999822617

原因

字符串對象是不可改變的,也就是說在python創建一個字符串后,你不能把這個字符中的某一部分改變。任何上面的函數改變了字符串后,都會返回一個新的字符串,原字串並沒有變。

所以上面的例子中,任何對字符串的操作包括’+’操作符都將創建一個新的字符串對象,而不是改變原來的對象.因此N個字符串相加必將丟棄中間N-1個結果,而列表不同,列表是可以改變的,因此前面使用list的append,再使用join還原成字符串,只內建了一次,節省了很多資源和時間。

字符串不可改變的現象其實這也是有變通的辦法的,可以用S=list(S)這個函數把S變為由單個字符為成員的list,這樣的話就可以使用S[3]=’a’的方式改變值,然后再使用S=” “.join(S)還原成字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM