首頁 > 後端開發 > Python教學 > 你可能不知道的30個Python語言的特點技巧

你可能不知道的30個Python語言的特點技巧

高洛峰
發布: 2016-10-19 11:38:00
原創
1098 人瀏覽過

從我開始學習Python時我就決定維護一個經常使用的「竅門」清單。不論何時當我看到一段讓我覺得「酷,這樣也行!」的程式碼(在一個例子中、在StackOverflow、在開源軟體中,等等),我會嘗試它直到理解它,然後把它加到列表中。這篇文章是清理過清單的一部分。如果你是個有經驗的Python程式設計師,儘管你可能已經知道一些,但你仍能發現一些你不知道的。如果你是一個正在學習Python的C、C++或Java程式設計師,或是剛開始學習編程,那麼你會像我一樣發現它們中的許多非常有用。

每個訣竅或語言特性只能透過實例來驗證,無需過多解釋。雖然我已盡力使例子清晰,但它們中的一些仍會看起來有些複雜,這取決於你的熟悉程度。所以如果看過例子後還不清楚的話,標題能夠提供足夠的資訊讓你透過Google獲取詳細的內容。

列表依難度排序,常用的語言特徵和技巧放在前面。

1.30   最大最小元素(heapq.nlargest和heapq.nsmallest)

>>> a = [random.randint(0, 100) for __ in xrange(100)]  

> a)  

[3, 3, 5, 6, 8]  

>>> heapq.nlargest(5, a)  

[100, 100, 99, 98, 98] . product)

>>> for p in itertools.product([1, 2, 3], [4, 5]):  

(1, 4)  

(1, 5)  

(

(2, 5)  

(3, 4)  

(3, 5)  

>>> for p in itertools.product([0, 1], printeat= ): ''.join(str(x) for x in p)  

...  

0000 

0001 

0010 

00111

0110 

0111 

1000 

1001 

1010 

1011 

1100 

1101 

1110 

1111 

1110 

1111 

. _replacement)

>>> for c in itertools.combinations([1, 2 , 3, 4, 5], 3):  

...     print ''.join(str(x) for x in c)  

...  

135 

145 

234 

235 

245 

345 

>>> for 

345 

>>> for 

345 

>>> forp.

...     print ''.join( str(x) for x in c)  

...  

11 

12 

13 

22 

s)

>>> for p in itertools .permutations([1, 2, 3, 4]):  

...     print ''.join(str(x) for x in p)  

...  

1234 

...  

1234 

... 1342 

1423 

1432 

2134 

2143 

2314 

3124 

3142 

3214 

3241 

3412 

3421

3412 

342143135

4213 

4231 

4312 

4321 

1.34   連結的迭代(itertools.chain)

1.34   連結的迭代(itertools.chain)

> for

> itertools.chain( itertools.combinations(a, 2), itertools.combinations(a, 3)):  

...     print p  

...  

(1, 2)  

.... 4)  

(2, 3)  

(2, 4)  

(3, 4)  

(1, 2, 3)  

(1, 3, 3, 3)

(2, 3, 4)  

>>> for subset in itertools.chain.from_iterable(itertools.combinations(a, n) for n in range(len(a) + 1)) Check subset  

...  

()  

(1,)  

(2,)  

(3,)  

(4,) 

(1, 4)  

(2, 3)  

(2, 4)  

(3, 4)  

(1, 2, 3)  

(1

(1, 2, 3)  

( , 4)  

(2, 3, 4)  

(1, 2, 3, 4) 

1.35   按給定值分組行(itertools.groupby)

1.35   依給定值分組資料> > import itertools  

>>> with open('contactlenses.csv', 'r') as infile:  

...     data = [line.strip().split(',') for line in in infile]  

...  

>>> data = data[1:]  

>>> def print_data(rows):  

...     print 'n'.join('t'.join({t'. }'.format(s) for s in row) for row in rows)  

...  

 

>>> print_data(data)  

年輕                            沒有                             近視                 無                        近視                    是                     近視                是                  正常                不                     減少                                                 柔軟

年輕             減                無

年輕遠視           是                    正常                硬 

老花前     近視                  否                   減少                沒有

近視前                  沒有                     正常                  軟 

前老花眼     近視                  是                    減少                無 

前老花眼       近視                  是                    正常                 硬

前老花眼      遠視           無                     減少              無

前老花眼     遠視眼無                      正常                 軟 

前老花眼     遠視眼          ye                    減少                無

前老花眼            是                    正常                無

老花眼         近視                  沒有                   減少                無 

老花眼         近視                 沒有                    正常                沒有

老花眼         近視                  是                    減少                無 

老花眼         近視                                   正常                 硬

老花         遠視           否                     減少               無 

老花眼         遠視眼           無                    正常                 軟 

老花眼         遠視眼          是                    減少                無

老花眼         遠視           是                    正常                無

 

>>>數據。 sort(key=itemgetter(-1))

>>> 取得值,在itertools.groupby(data, lambda r: r[-1]):

...     print '------- - ---' 

...     print '組:' + 值

...     print_data(group)  

...  

-----------

...  

-----------

組:很難

年輕              近視                  是                    正常                 硬 

年輕              遠視                             正常                 硬

前老花眼                  是                    正常                硬 

老花眼         近視                是                    正常                 硬 

------------  

分組:無

年輕近視                  沒有減少                無 

年輕              無                     沒有 

年輕              遠視             沒有 

年輕             遠視           是                              否                       減中               是                    減損                無 

前老花眼            是                  減少                            正常                 無 

老花眼                減少              無 

老花眼              正常                 無 

老花眼          矯正眼睛                     無

老花眼         遠視            記憶  沒有 

老花眼        遠視眼            是降低無

presbyopic hypermetrope是正常無

----------------------------------- young Myope no正常正常                 軟 

老花眼         遠視眼睛         軟

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板