實際案例
在設計某網路程式時,我們自定義了乙個基於udp的網路協議,按照固定次序向伺服器傳遞一系列引數:
hwdetect: 「<0112>」
gxdepthbits 「<32>」
gxresolution: 「<1024x768>」
gxrefresh: 」<60>」
fullalpha: 「<1>」
loddist: 「<100.0>」
distcull: 「<500.0>」
在程式中我們將各個引數按次序收集到列表中:
[「<0112>」, 「<32>」, 「<1024x768>」, 「<60>」, 「<1>」, 「<100.0>」, 「<500.0>」]
最終我們要把各個引數拼接成乙個資料報進行傳送:
「<0112><32><1024x768><60><1><100.0><500.0>>」
解決方案:
- 方法一:迭代列表,連續使用『+』操作依次拼接每乙個字串
- 方法二:使用str.join(),更加快速的拼接列表中所有字串
方法一迭代列表,連續使用『+』操作依次拼接每乙個字串,其**如下:
# -*- coding: utf-8 -*-
pl = ["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]
s = ""
for p in pl:
s += p
print s
其輸出結果為:
<0112>
<32>
<1024x768>
<60>
<1>
<100.0>
<500.0>
其實我們採用」+」進行字串拼接,實際上是運算子過載,在字串拼接時呼叫了str.__add__()。若有興趣可查閱python官方文件。
方法二使用str.join(),更加快速的拼接列表中所有字串,其**如下:
# -*- coding: utf-8 -*-
pl = ["<0112>", "<32>", "<1024x768>", "<60>", "<1>", "<100.0>", "<500.0>"]
s = "".join(pl)
print
s
其輸出結果如下:
<0112>
<32>
<1024x768>
<60>
<1>
<100.0>
<500.0>
對於方法一,若我們將方法一的中間結果列印輸出,我們就會發現方法一存在很嚴重的問題,每一次字串拼接操作python的直譯器都要進行記憶體的申請與**,一旦所需拼接的字串過多,其執行效率會大打折扣。
l = ["abc", 123, 'xyz']
# 通過生成器解析將每個元素轉為str型別
s = "".join(str(x) for x in l)
print s
其執行結果如下:
abc123xyz
當我們處理的列表中既有字串,又有非字串的資料時,我們可以使用生成器表示式或列表解析將列表中的每個元素轉為str型別。(注:具體關於列表解析與生成器表示式的效率問題,可參考傑瑞的專欄。) 4 4將多個小字串頻拼接成乙個字串
coding utf 8 實際案例 在設計某網路程式時,我們自定義了乙個基於udp的網路協議,按照固定次序向伺服器傳遞一系列引數 hwdetect 0112 gxdepthbits 32 在程式中我們將各個引數按次序收集到列表中 0112 32 1024 768 最終我們要把各個引數拼接成agiel...
MSSQL如何將查詢結果拼接成字串
在博問上看到乙個提問 mssql如何將查詢結果拼接成字串 想了一下應該怎麼實現呢,在c 等語言下好實現,但在sql裡實現 還真沒做過。目標 想要在sql中將查詢的結果拼接為 1 2 3 4 5 分析 要進行拼接就要取得每行的值,想到了游標可以做到。於是有了下面的方法 select name from...
python 如何將字串作為乙個物件?
如果閱讀了本系列前兩篇文章中的任何一篇文章,那麼在您的腦海中會立即浮現出這樣一句話 在 python 中,所有事物都是物件。到目前為止,我還沒有涉及到關於 python 中的字串的物件特性的問題,但是,與往常一樣,python 中的字串就是物件。事實上,字串物件是 str 類的乙個例項。正如您在 探...