欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

字符串拼接的兩種方法

程序當(dāng)中經(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) 的方式添加到列表當(dāng)中,返回=="".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)

結(jié)論

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

字符串長度在百萬以下:

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

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

分析

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

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

最后

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

相關(guān)文章

  • pycharm部署、配置anaconda環(huán)境的教程

    pycharm部署、配置anaconda環(huán)境的教程

    PyCharm是一款很好用很流行的python編輯器。Anaconda是專注于數(shù)據(jù)分析的Python發(fā)行版本,包含了conda、Python等190多個科學(xué)包及其依賴項,這篇文章主要介紹了pycharm部署、配置anaconda環(huán)境的教程,需要的朋友可以參考下
    2020-03-03
  • Python多線程采集二手房源數(shù)據(jù)信息流程詳解

    Python多線程采集二手房源數(shù)據(jù)信息流程詳解

    這篇文章主要介紹了Python多線程采集二手房源數(shù)據(jù)信息流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-05-05
  • Python中常用功能的實現(xiàn)代碼分享

    Python中常用功能的實現(xiàn)代碼分享

    這篇文章主要為大家整理分享了11個Python中常用功能的實現(xiàn)代碼片段,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • tensorflow中tf.slice和tf.gather切片函數(shù)的使用

    tensorflow中tf.slice和tf.gather切片函數(shù)的使用

    今天小編就為大家分享一篇tensorflow中tf.slice和tf.gather切片函數(shù)的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • PyCharm下載和安裝詳細(xì)步驟

    PyCharm下載和安裝詳細(xì)步驟

    這篇文章主要介紹了PyCharm下載和安裝詳細(xì)步驟,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • python中的Pillow常用功能詳解

    python中的Pillow常用功能詳解

    Pillow是一個強大的圖像處理庫,支持多種圖像操作,如打開、保存、裁剪、調(diào)整大小、旋轉(zhuǎn)、翻轉(zhuǎn)、過濾、合成、添加文字、調(diào)整模式和創(chuàng)建縮略圖,本文介紹python中的Pillow常用功能,感興趣的朋友一起看看
    2025-02-02
  • python 實現(xiàn)壓縮和解壓縮的示例

    python 實現(xiàn)壓縮和解壓縮的示例

    這篇文章主要介紹了python 實現(xiàn)壓縮和解壓縮的示例,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack)

    numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack)

    這篇文章主要介紹了numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python drf各類組件的用法和作用

    python drf各類組件的用法和作用

    這篇文章主要介紹了python drf各類組件的用法和作用,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-01-01
  • Python實戰(zhàn)之使用PyQt5構(gòu)建HTTP接口測試工具

    Python實戰(zhàn)之使用PyQt5構(gòu)建HTTP接口測試工具

    在現(xiàn)代軟件開發(fā)中,測試接口的有效性與響應(yīng)情況變得尤為重要,本文將指導(dǎo)構(gòu)建一個簡單的HTTP接口測試工具,使用Python的PyQt5庫創(chuàng)建用戶界面,并通過requests庫發(fā)送 HTTP 請求,需要的可以參考下
    2024-11-11

最新評論