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

Python 合并拼接字符串的方法

 更新時間:2020年07月28日 09:56:42   作者:看云  
這篇文章主要介紹了Python 合并拼接字符串的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下

問題

你想將幾個小的字符串合并為一個大的字符串

解決方案

如果你想要合并的字符串是在一個序列或者 iterable 中,那么最快的方式就是使用 join() 方法。比如:

>>> parts = ['Is', 'Chicago', 'Not', 'Chicago?']
>>> ' '.join(parts)
'Is Chicago Not Chicago?'
>>> ','.join(parts)
'Is,Chicago,Not,Chicago?'
>>> ''.join(parts)
'IsChicagoNotChicago?'
>>>

初看起來,這種語法看上去會比較怪,但是 join() 被指定為字符串的一個方法。這樣做的部分原因是你想去連接的對象可能來自各種不同的數(shù)據(jù)序列(比如列表,元組,字典,文件,集合或生成器等),如果在所有這些對象上都定義一個 join() 方法明顯是冗余的。因此你只需要指定你想要的分割字符串并調(diào)用他的 join() 方法去將文本片段組合起來。

如果你僅僅只是合并少數(shù)幾個字符串,使用加號(+)通常已經(jīng)足夠了:

>>> a = 'Is Chicago'
>>> b = 'Not Chicago?'
>>> a + ' ' + b
'Is Chicago Not Chicago?'
>>>

加號(+)操作符在作為一些復雜字符串格式化的替代方案的時候通常也工作的很好,比如:

>>> print('{} {}'.format(a,b))
Is Chicago Not Chicago?
>>> print(a + ' ' + b)
Is Chicago Not Chicago?
>>>

如果你想在源碼中將兩個字面字符串合并起來,你只需要簡單的將它們放到一起,不需要用加號(+)。比如:

>>> a = 'Hello' 'World'
>>> a
'HelloWorld'
>>>

討論

字符串合并可能看上去并不需要用一整節(jié)來討論。但是不應該小看這個問題,程序員通常在字符串格式化的時候因為選擇不當而給應用程序帶來嚴重性能損失。

最重要的需要引起注意的是,當我們使用加號(+)操作符去連接大量的字符串的時候是非常低效率的,因為加號連接會引起內(nèi)存復制以及垃圾回收操作。特別的,你永遠都不應像下面這樣寫字符串連接代碼:

s = ''
for p in parts:
  s += p

這種寫法會比使用 join() 方法運行的要慢一些,因為每一次執(zhí)行+=操作的時候會創(chuàng)建一個新的字符串對象。你最好是先收集所有的字符串片段然后再將它們連接起來。

一個相對比較聰明的技巧是利用生成器表達式(參考1.19小節(jié))轉(zhuǎn)換數(shù)據(jù)為字符串的同時合并字符串,比如:

>>> data = ['ACME', 50, 91.1]
>>> ','.join(str(d) for d in data)
'ACME,50,91.1'
>>>

同樣還得注意不必要的字符串連接操作。有時候程序員在沒有必要做連接操作的時候仍然多此一舉。比如在打印的時候:

print(a + ':' + b + ':' + c) # Ugly
print(':'.join([a, b, c])) # Still ugly
print(a, b, c, sep=':') # Better

當混合使用I/O操作和字符串連接操作的時候,有時候需要仔細研究你的程序。比如,考慮下面的兩端代碼片段:

# Version 1 (string concatenation)
f.write(chunk1 + chunk2)

# Version 2 (separate I/O operations)
f.write(chunk1)
f.write(chunk2)

如果兩個字符串很小,那么第一個版本性能會更好些,因為I/O系統(tǒng)調(diào)用天生就慢。另外一方面,如果兩個字符串很大,那么第二個版本可能會更加高效,因為它避免了創(chuàng)建一個很大的臨時結(jié)果并且要復制大量的內(nèi)存塊數(shù)據(jù)。還是那句話,有時候是需要根據(jù)你的應用程序特點來決定應該使用哪種方案。

最后談一下,如果你準備編寫構(gòu)建大量小字符串的輸出代碼,你最好考慮下使用生成器函數(shù),利用yield語句產(chǎn)生輸出片段。比如:

def sample():
  yield 'Is'
  yield 'Chicago'
  yield 'Not'
  yield 'Chicago?'

這種方法一個有趣的方面是它并沒有對輸出片段到底要怎樣組織做出假設。例如,你可以簡單的使用 join() 方法將這些片段合并起來:

text = ''.join(sample())

或者你也可以將字符串片段重定向到I/O:

for part in sample():
  f.write(part)

再或者你還可以寫出一些結(jié)合I/O操作的混合方案:

def combine(source, maxsize):
  parts = []
  size = 0
  for part in source:
    parts.append(part)
    size += len(part)
    if size > maxsize:
      yield ''.join(parts)
      parts = []
      size = 0
    yield ''.join(parts)

# 結(jié)合文件操作
with open('filename', 'w') as f:
  for part in combine(sample(), 32768):
    f.write(part)

這里的關鍵點在于原始的生成器函數(shù)并不需要知道使用細節(jié),它只負責生成字符串片段就行了。

以上就是Python 合并拼接字符串的方法的詳細內(nèi)容,更多關于Python 合并拼接字符串的資料請關注腳本之家其它相關文章!

相關文章

  • Python中實現(xiàn)進度條的多種方法總結(jié)

    Python中實現(xiàn)進度條的多種方法總結(jié)

    在Python編程中,進度條是一個非常有用的功能,它能讓用戶直觀地了解任務的進度,提升用戶體驗,本文將介紹幾種在Python中實現(xiàn)進度條的常用方法,并通過代碼示例和案例來展示它們的具體應用,需要的朋友可以參考下
    2025-01-01
  • Python多線程實現(xiàn)同步的四種方式

    Python多線程實現(xiàn)同步的四種方式

    本篇文章主要介紹了Python多線程實現(xiàn)同步的四種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • python增加圖像對比度的方法

    python增加圖像對比度的方法

    這篇文章主要為大家詳細介紹了python增加圖像對比度,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python利用for循環(huán)打印星號三角形的案例

    Python利用for循環(huán)打印星號三角形的案例

    這篇文章主要介紹了Python利用for循環(huán)打印星號三角形的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 詳解Python中for循環(huán)的定義迭代方法

    詳解Python中for循環(huán)的定義迭代方法

    for循環(huán)用于迭代序列(即列表、元組、字典、集合或字符串)。for 語句的寫法如從對象開始按順序給變量賦值,元素個數(shù)重復這個過程。對象可以是列表(數(shù)組)、元組、字符串等。本文將詳細講解Python中for定義迭代方法詳解,需要的可以了解一下
    2022-04-04
  • django rest framework serializer返回時間自動格式化方法

    django rest framework serializer返回時間自動格式化方法

    這篇文章主要介紹了django rest framework serializer返回時間自動格式化方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 簡單了解python PEP的一些知識

    簡單了解python PEP的一些知識

    這篇文章主要介紹了簡單了解python PEP的一些知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python循環(huán)引用和解決過程

    python循環(huán)引用和解決過程

    文章討論了在Python中解決循環(huán)引用問題的幾種方法,包括延遲導入、使用`importlib`、重構(gòu)代碼和類型提示的前向引用,這些方法可以幫助開發(fā)者避免導入循環(huán)導致的錯誤,并使代碼更加模塊化和易于維護
    2025-12-12
  • Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(實例代碼)

    Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(實例代碼)

    一年一度的元宵節(jié)來臨,小編在這里祝大家2022元宵節(jié)快樂,今天小編給大家分享一篇教程關于Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-02-02
  • Caffe均值文件mean.binaryproto轉(zhuǎn)mean.npy的方法

    Caffe均值文件mean.binaryproto轉(zhuǎn)mean.npy的方法

    今天小編就為大家分享一篇Caffe均值文件mean.binaryproto轉(zhuǎn)mean.npy的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

临朐县| 朝阳县| 余庆县| 汪清县| 大方县| 怀柔区| 花莲市| 绥滨县| 陇南市| 江门市| 黄山市| 阜平县| 苍南县| 宝丰县| 闵行区| 府谷县| 莒南县| 望江县| 登封市| 马山县| 安溪县| 商城县| 开封市| 阿勒泰市| 陆良县| 密云县| 定边县| 温泉县| 思茅市| 于都县| 嫩江县| 西和县| 青浦区| 新邵县| 育儿| 高雄市| 新河县| 钦州市| 改则县| 虎林市| 新乡市|