尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
作者 | Enoch CK
譯者 | 劉暢
整理 | Jane
出品 | Python大本營
【導語】無論你是一位高級的AI工程師還是學生,你都會在工作或學習過程中需要用到 Python。自 1991 年首次發布後,Python 很快就成為了工程師和技術人員最喜歡的語言。作為一種擁有相對簡單語法的高級解釋語言,Python 成為了大家的不二之選。 一些集成的 Python 庫也被應用在各個領域,如生物信息學(biopython),數據科學(pandas),機器學習(keras / tensorflow)甚至天文學(astropy)。盡管 Python 的執行速度比Java或其他語言慢得多,但無可否認它提高了工作效率。
(圖片來源:原文引用自 Stack Overflow)
在這篇文章中,作者總結了在 Python 編程過程 5 個有助於提高編碼效率的編程技巧。希望大家在改進代碼時,這篇文章能提供一絲靈感。
技巧一:使用單行(one-liners)簡化語句
每次看到那麼多行的條件語句的時候,是不是都覺得頭好痛? 如果簡單一些的還好說,能找出不同條件下的關係,但是複雜的簡直就是要迷失自我了。今天給大家介紹的 Python 單行功能也許能幫你解決這個困擾。例如,條件語句
1>>>ifalpha>7:2>>>beta=9993>>>elifalpha==7:4>>>beta=995>>>else:6>>>beta=0
可以簡化為
1>>>beta=999ifalpha>7else(beta==99ifalpha==7else0)
是不是很神奇! 如果仔細檢查我們寫的代碼,一定可以找到能簡化的代碼。除了條件語句之外,for 循環也可以簡化。 例如,將整數列表加倍
1>>>lst=[1,3,5]2>>>doubled=[]3>>>fornuminlst:4>>>doubled.append(num*2)
可以簡化為一行
1>>>doubled=[num*2fornuminlst]
當然,如果將所有內容都鏈接成一行,可能會有點麻煩。同時,還要確保你的代碼中沒有過度使用單行代碼。
技巧二:字符串快速操作
要反轉字符串,我們只需添加 ::-1 作為列表索引,就可以讓你的工作非常輕鬆。
1>>>a="ilovepython"2>>>printa[::-1]3nohtypevoli
同樣的技巧也可以應用於整數列表。在 Python 中,字符串操作非常簡單。 例如,如果要使用以下的預定義變量 str1、str2 和 lst3 來輸出一個句子。
1>>>str1="Totally"2>>>str2="Awesome"3>>>lst3=["Omg","You","Are"]
只需使用.join()方法和算術運算符即可創建所需的句子。
1>>>print''.join(lst3)2OmgYouAre3>>>print''.join(lst3)+''+str1+''+str24OmgYouAreTotallyAwesome
除了字符串操作,還建議大家了解更多有關正則表達式的方法,以便更有效地搜尋字符串和過濾模式。
技巧三:嵌套的列表組合
itertools 是我最喜歡的 Python 庫之一。試想一下,你的代碼中有十幾個列表,經過一些操作後,會得到一個深度嵌套的列表。 itertools 正是用來解決語法混亂的工具。
1>>>importitertools2>>>flatten=lambdax:list(itertools.chain.from_iterable(x))3>>>s=[['"','An','investment'],['in'],['knowledge'],['pays'],['the','best'],['interest."','--'],['Benjamin'],['Franklin']]4>>>print(''.join(flatten(s)))5"Aninvestmentinknowledgepaysthebestinterest."--BenjaminFranklin
從上面的例子中可以看出,我們可以使用.join()和 itertools 方法來組合嵌套的列表和字符串。itertools 中的 .combinations()方法可以用於從輸入迭代中返回元素的長度子序列。
技巧四:簡單的數據結構
回到技巧一,可以非常容易的使用單行程序來初始化Python中的數據結構。 Harold Cooper 使用以下代碼做到了單行樹結構:
1>>>deftree():returndefaultdict(tree)
上面顯示的代碼只是定義了一個默認值為樹的字典。
1>>>reduce((lambdar,x:r-set(range(x**2,N,x))if(xinr)elser),range(2,N),set(range(2,N)))
Python 還擁有一個強大的庫,如 Collections,它可以幫助您解決各種現實問題,不用編寫冗長的代碼。
1>>>fromcollectionsimportCounter2>>>myList=[1,1,2,3,4,5,3,2,3,4,2,1,2,3]3>>>print(Counter(myList))4Counter({2:4,3:4,1:3,4:2,5:1})
技巧五:輕鬆列印(print)
最後分享給大家的是,我希望自己能在學習初期的時候就知道的一個技巧。 我們不需要使用 .join()和循環,就可以列印一個帶有字符串的數組。
1>>>row=["1","bob","developer","python"]2>>>print(','.join(str(x)forxinrow))31,bob,developer,python
單行代碼則如下:
1>>>print(*row,sep=',')21,bob,developer,python
另一個巧妙的列印技巧是使用枚舉。 enumerate 是Python的內置函數,非常有用。 因此,不需要寫如下一個四行代碼
1>>>iterable=['a','b','c']2>>>c=03>>>foriteminiterable:4>>>printc,item5>>>c+=160a71b82c
只需兩行就可以完成同樣的工作
1>>>forc,iteminenumerate(iterable):2>>>printc,item
Python 中有成千上萬的列印技巧,比如 pprint,以後還可以再與大家進行分享。
本次內容就先為大家介紹這五個技巧。 如果你還知道其他的Python技巧,也可以留言和大家一起分享。
原文鏈接:
https://towardsdatascience.com/five-python-tricks-you-need-to-learn-today-9dbe03c790ab
(本文為Python大本營整理,轉載請微信聯繫1092722531。)
福利
公眾號後台回復:2018Python,獲取2018Python開源項目Top100整理資料!或掃碼添加小助手微信,回復:1,入群獲取。
推薦閱讀: