如何將多個(gè)小字符串拼接成一個(gè)大字符串

實(shí)際案例

在設(shè)計(jì)某網(wǎng)絡(luò)程序時(shí),我們自定義了一個(gè)基于UDP的網(wǎng)絡(luò)協(xié)議,按照固定次序向服務(wù)器傳遞一系列參數(shù):
  hwDetect: "<0112>"
  gxDepthBits "<32>"
  gxResolution: "<1024x768>"
  gxRefresh: ''<60>"
  fullAlpha: "<1>"
  lodDist: "<100.0>"
  DistCull: "<500.0>"
在程序中我們將各個(gè)參數(shù)按次序收集到列表中:
["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]
最終我們要把各個(gè)參數(shù)拼接成一個(gè)數(shù)據(jù)報(bào)進(jìn)行發(fā)送:
"<0112><32><1024x768><60><1><100.0><500.0>>"

解決方案:

  • 方法一:迭代列表,連續(xù)使用‘+’操作依次拼接每一個(gè)字符串
  • 方法二:使用str.join(),更加快速的拼接列表中所有字符串
方法一

迭代列表,連續(xù)使用‘+’操作依次拼接每一個(gè)字符串,其代碼如下:

# -*- coding: utf-8 -*-

pl = ["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]
s = ""

for p in pl:
    s += p

print s

其輸出結(jié)果為:

<0112><32><1024x768><60><1><100.0><500.0>

其實(shí)我們采用"+"進(jìn)行字符串拼接,實(shí)際上是運(yùn)算符重載,在字符串拼接時(shí)調(diào)用了str.__add__()。若有興趣可查閱Python官方文檔。

方法二

使用str.join(),更加快速的拼接列表中所有字符串,其代碼如下:

# -*- coding: utf-8 -*-

pl = ["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]

s = "".join(pl)

print s

其輸出結(jié)果如下:

<0112><32><1024x768><60><1><100.0><500.0>

對(duì)于方法一,若我們將方法一的中間結(jié)果打印輸出,我們就會(huì)發(fā)現(xiàn)方法一存在很?chē)?yán)重的問(wèn)題,每一次字符串拼接操作Python的解釋器都要進(jìn)行內(nèi)存的申請(qǐng)與回收,一旦所需拼接的字符串過(guò)多,其運(yùn)行效率會(huì)大打折扣。

因此,我們對(duì)于處理大量字符串拼接操作推薦使用str.join()。為此,在這里再介紹一個(gè)關(guān)于str.join()的小技巧,其代碼如下:

l = ["abc", 123, 'xyz']

# 通過(guò)生成器解析將每個(gè)元素轉(zhuǎn)為str類(lèi)型
s = "".join(str(x) for x in l)

print s

其運(yùn)行結(jié)果如下:

abc123xyz

當(dāng)我們處理的列表中既有字符串,又有非字符串的數(shù)據(jù)時(shí),我們可以使用生成器表達(dá)式或列表解析將列表中的每個(gè)元素轉(zhuǎn)為str類(lèi)型。(注:具體關(guān)于列表解析與生成器表達(dá)式的效率問(wèn)題,可參考杰瑞的專(zhuān)欄。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,679評(píng)論 0 4
  • 一、字符串在C#中,字符串是一系列不可修改的Unicode字符,創(chuàng)建字符串后,就不能修改它。要?jiǎng)?chuàng)建字符串,最常用的...
    CarlDonitz閱讀 1,386評(píng)論 0 2
  • Javascript有很多字符串的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺(jué)得API上說(shuō)的不全,...
    頑皮的雪狐七七閱讀 2,368評(píng)論 0 2
  • 南昌城樓炮震天,人民軍隊(duì)初成團(tuán)。 秋收起義文家市,朱毛會(huì)師井岡山。 反蔣圍剿四勝連,王明左傾致五敗。 紅軍主力踏長(zhǎng)...
    少爺寫(xiě)春秋閱讀 216評(píng)論 1 4

友情鏈接更多精彩內(nèi)容