成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

初學者都在坑里!不要在Python中使用“+”來連接字符串

開發 后端
成熟的開發人員似乎更喜歡使用.join()來連接字符串,而不是“+”。本文中,我將告訴你這兩種方法之間的區別,以及為什么不應該使用“+”。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

很多初學者都像我一樣,最開始使用Python時,會不自覺地使用“+”來連接字符串,就像在許多其他編程語言(比如Java)中那樣,因為這樣既直觀又容易。

但我很快意識到成熟的開發人員似乎更喜歡使用.join()來連接字符串,而不是“+”。

你現在一定像我剛知道這一點時一樣困惑。本文中,我將告訴你這兩種方法之間的區別,以及為什么不應該使用“+”。

[[328857]]

開始

作為一名初學者,或者剛從使用“+”連接字符串的其他編程語言切換過來的人,很順手地就會寫出這樣的代碼:

  1. str1 =“I love” 
  2. str2 =“Python.” print(str1 + str2) 

初學者都在坑里!不要在Python中使用“+”來連接字符串

但時間久了,你或許或許就會發現,別人都是這樣寫的:

  1. str1 =“I love” 
  2. str2 =“Python.” print(''.join([str1,str2])) 
初學者都在坑里!不要在Python中使用“+”來連接字符串

實話說,當我第一次看到上述方法時,我認為這既不直觀也不美觀。

連接多個字符串

轉折發生在不久之后,有一次我需要連接列表中的多個字符串。

  1. strs = ['Life','is','short','I','use','Python'] 

最初,我是這樣做的:

  1. strs = ['Life', 'is', 'short,','I', 'use', 'Python']def join_strs(strs): 
  2.     result = '' 
  3.     for s in strs: 
  4.         result += ' ' + s 
  5.     return result[1:]join_strs(strs) 
初學者都在坑里!不要在Python中使用“+”來連接字符串

我必須編寫一個for循環來逐個連接字符串。另外,結果字符串前需要刪除我在開頭添加的空格,因為所有字符串都需要在前面添加空格,而不是單是開頭。

或許你有其他解決方案,例如將索引添加到for循環中,這樣就不應將index=0處的字符串添加到此空格處。無論如何,你仍然需要使用此for循環并為空格做些什么。

這時,我回想起以前曾經看過.join()方法,靈光乍現,也許這正是我需要使用它的時候!

初學者都在坑里!不要在Python中使用“+”來連接字符串

超輕松解決了!一行代碼可以完成所有工作。由于.join()方法是由字符串對象調用的,該字符串對象將用于連接列表中的每個字符串,因此你無需擔心開頭的空格。

但這不是我們需要使用join()而不是“+”方法的唯一原因。

join()方法背后的邏輯

讓我們來比較一下這兩種方法的性能,使用Jupyter Notebook的魔術方法%timeit來對其進行評估。

初學者都在坑里!不要在Python中使用“+”來連接字符串

上面顯示的性能基于10萬條路徑,結果是非常可信且顯而易見的。使用join()方法可能比使用“+”來連接列表中的字符串快4倍。

這是為什么呢?看看我繪制的概念圖,用于演示使用“+”連接字符串的方法:

 

初學者都在坑里!不要在Python中使用“+”來連接字符串

 

 

使用“+”運算符和for循環將字符串連接

 

這顯示了for循環和“+”運算符的作用:

  • 對于每個循環,都可以從列表中找到字符串
  • 對于每個循環,執行程序將需要申請兩次內存地址,一次用于空格,另一次用于字符串。
  • Python執行程序解釋表達式result + =''+s并為空格申請內存地址。
  • 然后,執行程序意識到空格需要與字符串連接,因此它將為字符串s申請內存地址,這是第一個循環“life”。
  • 其中還存在12次內存分配。

那么,使用join()方法發生了什么?

 

初學者都在坑里!不要在Python中使用“+”來連接字符串

 

 

使用“ join()”方法將字符串連接到列表中

 

  • 執行程序將計算列表中有多少個字符串。這里有6個。
  • 這意味著用于連接列表的字符串需要重復6-1 =5次。
  • 這里總共需要11個內存空間,因此所有的這些空間將被立即應用并被預先分配。
  • 然后按順序排列字符串,再返回結果頁面。

很明顯,主要的區別在于內存分配的次數,這就是提高性能的主要原因。想象一下,使用join()方法將6個字符串連接在一起,速度已經快了4倍。如果我們連接了大量的字符串呢?它將發生更大的變化!

在Python中連接字符串時,顯然,考慮到其性能,join()方法是首選。

通常來說,學習一門編程語言需要很長的時間。但是初學者上手Python的時間相對較短,這是它的優勢之一。但我們不應止步于此并滿足于現在可以使用Python所做的事情。

畢竟,平凡和卓越之間的差距可能正來自于一些小細節。

 

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2015-03-23 17:18:18

Java字符串問題

2022-12-08 12:05:03

Bash字符串

2022-12-14 10:08:00

BashLinux

2022-12-02 14:30:24

Bash腳本數組

2012-03-14 10:56:23

web app

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2011-04-12 10:13:24

2010-03-10 17:09:26

Python語言

2011-06-21 10:44:31

const

2020-09-08 19:03:41

Java代碼初學者

2022-07-22 13:14:57

TypeScript指南

2009-08-30 15:04:56

2010-06-13 11:13:38

UML初學者指南

2021-05-10 08:50:32

網絡管理網絡網絡性能

2009-11-18 09:30:43

2023-07-28 07:31:52

JavaScriptasyncawait

2022-03-28 09:52:42

JavaScript語言

2011-05-18 11:01:39

Oracle

2023-07-03 15:05:07

預測分析大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区欧美 | 日本在线视频一区二区 | 久久久久国产精品一区三寸 | 啪啪综合网| 欧美一级片免费看 | 午夜精品久久久久久久久久久久久 | 在线a视频 | 99riav国产一区二区三区 | 成人在线一区二区 | 欧美一级毛片在线播放 | 久久精品女人天堂av | 毛片免费在线观看 | 91免费高清 | jizz中国日本| 亚洲人成人一区二区在线观看 | 一区二区不卡视频 | 色婷婷综合成人av | 精品国产一区一区二区三亚瑟 | xxx视频| 国产精品一区二区三 | 国产精品一区二区三区在线播放 | 亚洲国产精品99久久久久久久久 | 天天躁日日躁aaaa视频 | 91文字幕巨乱亚洲香蕉 | 精品视频免费在线 | 欧美不卡一区 | 色888www视频在线观看 | 国产伊人精品 | 久久久久国产精品一区三寸 | 欧美一级久久精品 | 毛片av免费看| 日韩欧美在线观看 | 在线观看视频你懂得 | 国产人成在线观看 | 久久这里只有 | 国内自拍偷拍 | 一区视频| 中文字幕在线观看一区 | 国产91视频一区二区 | 麻豆av网站 | 国产一区二区三区四区在线观看 |