1. 程式人生 > >五個Python程式設計Tips,幫你提高編碼效率!

五個Python程式設計Tips,幫你提高編碼效率!

【導語】無論你是一位高階的AI工程師還是學生,你都會在工作或學習過程中需要用到 Python。自 1991 年首次釋出後,Python 很快就成為了程式設計師和技術人員最喜歡的語言。作為一種擁有相對簡單語法的高階解釋語言,Python 成為了大家的不二之選。 一些整合的 Python 庫也被應用在各個領域,如生物資訊學(biopython),資料科學(pandas),機器學習(keras / tensorflow)甚至天文學(astropy)。儘管 Python 的執行速度比Java或其他語言慢得多,但無可否認它提高了工作效率。

 

 

五個Python程式設計Tips,幫你提高編碼效率!

 

 

(圖片來源:原文引用自 Stack Overflow)

 

在這篇文章中,作者總結了在 Python 程式設計過程 5 個有助於提高編碼效率的程式設計技巧。希望大家在改進程式碼時,這篇文章能提供一絲靈感。

 

技巧一:使用單行(one-liners)簡化語句

 

每次看到那麼多行的條件語句的時候,是不是都覺得頭好痛? 如果簡單一些的還好說,能找出不同條件下的關係,但是複雜的簡直就是要迷失自我了。今天給大家介紹的 Python 單行功能也許能幫你解決這個困擾。例如,條件語句

 

1>>> if alpha > 7:
2>>> beta = 999
3>>> elif alpha == 7:
4>>> beta = 99
5>>> else:
6>>> beta = 0

 

可以簡化為

 

1>>> beta = 999 if alpha > 7 else (beta == 99 if alpha == 7 else 0)

 

是不是很神奇! 如果仔細檢查我們寫的程式碼,一定可以找到能簡化的程式碼。除了條件語句之外,for 迴圈也可以簡化。 例如,將整數列表加倍

 

1>>> lst = [1, 3, 5]
2>>> doubled = [] 
3>>> for num in lst:
4>>> doubled.append(num*2)

 

可以簡化為一行

 

1>>> doubled = [num * 2 for num in lst]

 

當然,如果將所有內容都連結成一行,可能會有點麻煩。同時,還要確保你的程式碼中沒有過度使用單行程式碼。

技巧二:字串快速操作

要反轉字串,我們只需新增 ::-1 作為列表索引,就可以讓你的工作非常輕鬆。

 

1>>> a = "ilovepython" 
2>>> print a[::-1] 
3nohtypevoli

 

同樣的技巧也可以應用於整數列表。在 Python 中,字串操作非常簡單。 例如,如果要使用以下的預定義變數 str1、str2 和 lst3 來輸出一個句子。

 

1>>> str1 = "Totally"
2>>> str2 = "Awesome"
3>>> lst3 = ["Omg", "You", "Are"]

 

只需使用.join()方法和算術運算子即可建立所需的句子。

 

1>>> print ' '.join(lst3)
2Omg You Are
3>>> print ' '.join(lst3)+' '+str1+' '+str2
4Omg You Are Totally Awesome

除了字串操作,還建議大家瞭解更多有關正則表示式的方法,以便更有效地搜尋字串和過濾模式。

技巧三:巢狀的列表組合

itertools 是我最喜歡的 Python 庫之一。試想一下,你的程式碼中有十幾個列表,經過一些操作後,會得到一個深度巢狀的列表。 itertools 正是用來解決語法混亂的工具。

 

1>>> import itertools
2>>> flatten = lambda x: list(itertools.chain.from_iterable(x))
3>>> s = [['"', 'An', 'investment'], ['in'], ['knowledge'], ['pays'], ['the', 'best'], ['interest."', '--'], ['Benjamin'], ['Franklin']]
4>>> print(' '.join(flatten(s)))
5" An investment in knowledge pays the best interest." -- Benjamin Franklin

 

從上面的例子中可以看出,我們可以使用 .join()和 itertools 方法來組合巢狀的列表和字串。itertools 中的 .combinations()方法可以用於從輸入迭代中返回元素的長度子序列。

技巧四:簡單的資料結構

回到技巧一,可以非常容易的使用單行程式來初始化Python中的資料結構。 Harold Cooper 使用以下程式碼實現了單行樹結構:

 

1>>> def tree(): return defaultdict(tree)

 

上面顯示的程式碼只是定義了一個預設值為樹的字典。

 

1>>> reduce( (lambda r,x: r-set(range(x**2,N,x)) if (x in r) else r), range(2,N), set(range(2,N)))

 

Python 還擁有一個強大的庫,如 Collections,它可以幫助您解決各種現實問題,不用編寫冗長的程式碼。

 

1>>> from collections import Counter
2>>> 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) for x in row))
31,bob,developer,python

 

單行程式碼則如下:

 

1>>> print(*row, sep=',')
21,bob,developer,python

 

另一個巧妙的列印技巧是使用列舉。 enumerate 是Python的內建函式,非常有用。 因此,不需要寫如下一個四行程式碼

 

1>>> iterable = ['a','b','c']
2>>> c = 0 
3>>> for item in iterable: 
4>>> print c, item 
5>>> c+= 1
60 a
71 b
82 c

進群:960410445  即可獲取數十套PDF!

只需兩行就可以完成同樣的工作

 

1>>> for c, item in enumerate(iterable):
2>>> print c, item

Python 中有成千上萬的列印技巧,比如 pprint,以後還可以再與大家進行分享。

本次內容就先為大家介紹這五個技巧。 如果你還知道其他的Python技巧,也可以留言和大家一起分享。