成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

面試python崗位,提問(wèn):連接字符串用join還是+,怎么回答?

molyzzx / 775人閱讀

摘要:上面的程序有如下的輸出可以看到,的性能明顯好于。而在連接字符串的時(shí)候,會(huì)先計(jì)算需要多大的內(nèi)存存放結(jié)果,然后一次性申請(qǐng)所需內(nèi)存并將字符串復(fù)制過(guò)去,這是為什么的性能優(yōu)于的原因。所以在連接字符串?dāng)?shù)組的時(shí)候,我們應(yīng)考慮優(yōu)先使用。


本篇要講的是,連接字符串的時(shí)候可以用join也可以用+,但這兩者有沒(méi)有區(qū)別呢?
關(guān)注公眾號(hào):「Python專(zhuān)欄」,后臺(tái)回復(fù)「騰訊架構(gòu)資源1」,獲取由騰訊架構(gòu)師整理的大數(shù)據(jù)學(xué)習(xí)資源包全套!?。?/p>

我們先來(lái)看一下用join和+連接字符串的例子

str1 = " ".join(["hello", "world"])
str2 = "hello " + "world"

print(str1)  # 輸出 “hello world"
print(str2)  # 輸出 “hello world"

兩者的結(jié)果是一樣,那么考慮這樣一個(gè)問(wèn)題,這兩者在性能上有區(qū)別嗎?
我們來(lái)做個(gè)實(shí)驗(yàn),比較下join和+的性能

import timeit

def test1(strlist):
    return "".join(strlist)

def test2(strlist):
    result = ""
    for v in strlist:
        result = result+v
    return result

if __name__ == "__main__":
    strlist = ["a very very very very very very very long string" for n in range(100000)]
    timer1 = timeit.Timer("test1(strlist)", "from __main__ import strlist, test1")
    timer2 = timeit.Timer("test2(strlist)", "from __main__ import strlist, test2")
    time1 = timer1.timeit(number=100)
    time2 = timer2.timeit(number=100)
    print("join: %f, plus: %f" % (time1, time2))

那么這里我們不對(duì)timeit模塊做過(guò)多解釋?zhuān)銈兛梢岳斫鉃槭且粋€(gè)對(duì)代碼效率進(jìn)行檢測(cè)運(yùn)行耗時(shí)的模塊。下次我們多帶帶起一篇來(lái)說(shuō)這個(gè)timeit。

上面的程序有如下的輸出

join: 0.116944, plus: 0.394379

可以看到,join的性能明顯好于+。這是為什么呢?

原因是這樣的,字符串是不可變對(duì)象,當(dāng)用操作符+連接字符串的時(shí)候,每執(zhí)行一次+都會(huì)申請(qǐng)一塊新的內(nèi)存,然后復(fù)制上一個(gè)+操作的結(jié)果和本次操作的右操作符到這塊內(nèi)存空間,因此用+連接字符串的時(shí)候會(huì)涉及好幾次內(nèi)存申請(qǐng)和復(fù)制。

而join在連接字符串的時(shí)候,會(huì)先計(jì)算需要多大的內(nèi)存存放結(jié)果,然后一次性申請(qǐng)所需內(nèi)存并將字符串復(fù)制過(guò)去,這是為什么join的性能優(yōu)于+的原因。

所以在連接字符串?dāng)?shù)組的時(shí)候,我們應(yīng)考慮優(yōu)先使用join。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43345.html

相關(guān)文章

  • 從零轉(zhuǎn)行數(shù)據(jù)分析的親身經(jīng)歷

    摘要:我的轉(zhuǎn)行經(jīng)歷博主從開(kāi)公眾號(hào)起前個(gè)月開(kāi)始接觸語(yǔ)言,然后接觸到了數(shù)據(jù)方面的技術(shù),包括爬蟲(chóng),數(shù)據(jù)分析,數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)等,一直到現(xiàn)在仍然在堅(jiān)持自學(xué),我相信只要堅(jiān)持結(jié)果總不會(huì)太差。對(duì)于數(shù)據(jù)分析而言,機(jī)器學(xué)習(xí)和爬蟲(chóng)等并不是必須,但是加分項(xiàng)。 作者:xiaoyu 微信公眾號(hào):Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 showImg(https://segmentfault.com/i...

    Rocture 評(píng)論0 收藏0
  • 細(xì)讀應(yīng)聘阿里全流程,我是如何拿到阿里offer!

    摘要:應(yīng)聘阿里是一個(gè)相對(duì)較長(zhǎng)的流程,涉及崗位選擇簡(jiǎn)歷投遞簡(jiǎn)歷評(píng)估技術(shù)面試面試背景調(diào)查入職材料準(zhǔn)備等環(huán)節(jié)。關(guān)于學(xué)歷和專(zhuān)業(yè)的要求目前,阿里的正式崗位對(duì)學(xué)歷的要求基本都是本科及以上,這個(gè)要求并不高,出發(fā)點(diǎn)是避免因?qū)W歷限制而錯(cuò)過(guò)優(yōu)秀的人才。 應(yīng)聘阿里是一個(gè)相對(duì)較長(zhǎng)的流程,涉及崗位選擇、簡(jiǎn)歷投遞、簡(jiǎn)歷評(píng)估、技術(shù)面試、HR面試、背景調(diào)查、入職材料準(zhǔn)備等環(huán)節(jié)。其中,關(guān)于技術(shù)面試,網(wǎng)上有很多優(yōu)秀的攻略,但普...

    AlanKeene 評(píng)論0 收藏0
  • 細(xì)讀應(yīng)聘阿里全流程,我是如何拿到阿里offer!

    摘要:應(yīng)聘阿里是一個(gè)相對(duì)較長(zhǎng)的流程,涉及崗位選擇簡(jiǎn)歷投遞簡(jiǎn)歷評(píng)估技術(shù)面試面試背景調(diào)查入職材料準(zhǔn)備等環(huán)節(jié)。關(guān)于學(xué)歷和專(zhuān)業(yè)的要求目前,阿里的正式崗位對(duì)學(xué)歷的要求基本都是本科及以上,這個(gè)要求并不高,出發(fā)點(diǎn)是避免因?qū)W歷限制而錯(cuò)過(guò)優(yōu)秀的人才。 應(yīng)聘阿里是一個(gè)相對(duì)較長(zhǎng)的流程,涉及崗位選擇、簡(jiǎn)歷投遞、簡(jiǎn)歷評(píng)估、技術(shù)面試、HR面試、背景調(diào)查、入職材料準(zhǔn)備等環(huán)節(jié)。其中,關(guān)于技術(shù)面試,網(wǎng)上有很多優(yōu)秀的攻略,但普...

    jay_tian 評(píng)論0 收藏0
  • 技術(shù)面試老是有勁使不出,該怎么辦?

    摘要:老王工作五六年了,今年剛從一家不小的公司出來(lái),公司效益不好,年底裁員了,不幸老王在年前的最后一次裁員名單中中獎(jiǎng)了。小黃心想,昨天復(fù)習(xí)了面試寶典里的數(shù)據(jù)庫(kù)索引,老師說(shuō)這個(gè)是要點(diǎn),面試官怎么不按常理出牌呢。 又到了一年金三銀四,回想到很多年前我剛參加工作時(shí)的面試經(jīng)歷,那時(shí)都是呆呆地等著面試官問(wèn)問(wèn)題,被問(wèn)到一些自己并不熟悉的問(wèn)題時(shí)要不就是思考半天也切不中要點(diǎn),要不就只能無(wú)奈地回答并不清楚了。...

    史占廣 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<