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

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

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

字符串拼接的兩種方法

程序當中經常出現(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é)省了時間消耗。

最后

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

相關文章

最新評論

无极县| 江西省| 通榆县| 迁安市| 鹤峰县| 兴化市| 剑阁县| 门源| 重庆市| 黑龙江省| 宁陵县| 色达县| 永昌县| 藁城市| 高邑县| 石阡县| 泸水县| 泸定县| 通河县| 四川省| 天峨县| 湖南省| 屯留县| 南投市| 玛多县| 会同县| 宜黄县| 壶关县| 瑞昌市| 南汇区| 乐东| 明星| 独山县| 潮州市| 方正县| 茶陵县| 尚志市| 博兴县| 丰镇市| 绥江县| 东山县|