最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分析Python字符串拼接+=和join()哪個速度更快

 更新時間:2024年02月09日 09:42:24   作者:程序猿過家家  
這篇文章主要分析了Python中字符串拼接+=和join()哪個速度更快,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

字符串拼接的兩種方法

程序當中經(jīng)常出現(xiàn)需要不斷接收新字符串并將這些字符串組成新字符串輸出的情況。

該方法一般有兩種解決方案:

  • 創(chuàng)建一個空字符串(test_str),將每次新傳入的 new_str 使用 ‘test_str += new_str’ 的方式添加到原有字符串中,返回test_str
  • 創(chuàng)建一個空列表(test_list),將每次新傳入的 new_str 使用 append(new_str) 的方式添加到列表當中,返回=="".join(test_list)==

效率之間的比較

import time

# 裝飾器,計算程序運行時間
def start_time(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        res = func(*args, **kwargs)
        print(func.__name__, time.time() - start)
        return res

    return wrapper


# 使用 append 和 join 實現(xiàn)連續(xù)字符串拼接
@start_time
def test_1(frequency, string):
    s = []
    for i in range(frequency):
        s.append(string)
    return ''.join(s)


# 使用 += 實現(xiàn)連續(xù)字符串拼接
@start_time
def test_2(frequency, string):
    s = ''
    for i in range(frequency):
        s += string
    return s


name = 'P'
for i in range(25):
    print('\n數(shù)據(jù)量為2的{}次方'.format(i))
    f = 2 ** i
    test_1(f, name)
    test_2(f, name)

結論

注:具體測試結果會因硬件性能差別而有較大差異,趨勢不會變。

字符串長度在百萬以下:

兩種方式區(qū)別不大,join() 方法會快 25% 左右字符串長度在百萬以上:+=的方法所消耗的時間會指數(shù)級的增加,(百萬以下也指數(shù)級增加,只是不明顯),join() 方法會有明顯優(yōu)勢。

當代碼當中的 name 長度越長,+= 方法的弊端就越明顯。

分析

Python中字符串是不可變對象,修改字符串就得將原字符串中的值復制,開辟一塊新的內存,加上修改的內容后寫入到新內存中,以達到“修改”字符串的效果。在使用“+”拼接字符串時,正是使用了重復性的復制、申請新內存、寫入值到新內存的工作一遍遍的將字符串的值修改。

而使用join()方法拼接字符串時,會先計算總共需要申請多少內存,然后一次性申請所需內存并將字符串復制過去。這樣便省去了重復性的內存申請和寫入,節(jié)省了時間消耗。

最后

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

湘西| 高雄县| 赣州市| 南平市| 开远市| 茌平县| 大新县| 琼结县| 介休市| 嘉善县| 康保县| 高邑县| 博湖县| 阿城市| 闵行区| 张掖市| 南宁市| 荥经县| 安阳市| 乐清市| 南昌市| 临西县| 嘉义市| 密山市| 松桃| 惠东县| 黄平县| 尚义县| 大厂| 文登市| 积石山| 内黄县| 出国| 襄城县| 吴旗县| 兴文县| 花垣县| 富川| 太康县| 普安县| 沙洋县|