自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

這些很好用卻不被看好的Python庫,你知道多少?

開發(fā) 后端
生活中,常常有一些人,明明很有能力,卻不被身邊人看好。是金子總能發(fā)光,這句話放在現(xiàn)實(shí)生活中,其實(shí)并不完全適用,人口眾多,不乏有才之人,想要成功就需要一個(gè)一鳴驚人的機(jī)會(huì)。

生活中,常常有一些人,明明很有能力,卻不被身邊人看好。

[[284235]]

是金子總能發(fā)光,這句話放在現(xiàn)實(shí)生活中,其實(shí)并不完全適用,人口眾多,不乏有才之人,想要成功就需要一個(gè)一鳴驚人的機(jī)會(huì)。

Python也是。

Python中有很多現(xiàn)成的性能不錯(cuò)的庫。collections就是其中一個(gè)。

collections模塊提供了“高性能的容器數(shù)據(jù)類型”,是通用容器字典、列表、集合和元組的完美替代。

但卻常常被人忽視或者看輕。

今天,小芯就將努力當(dāng)一個(gè)“好伯樂”,簡潔明了地為大家介紹那些不被看好的Python庫,發(fā)掘出它們的無限潛能。

在本文中將會(huì)向讀者仔細(xì)介紹其中的三種數(shù)據(jù)類型,相信在閱讀完本文后,大家一定會(huì)疑惑自己之前是如何在沒有這些庫的情況下完成編程。

Counter

Counter的名字很貼切——它的主要功能就是計(jì)數(shù)。這聽起來很簡單,但事實(shí)證明,數(shù)據(jù)科學(xué)家經(jīng)常不得不進(jìn)行計(jì)數(shù),所以它十分有效。

有幾種方法可以實(shí)現(xiàn)初始化,但筆者通常會(huì)設(shè)置一個(gè)如下圖的值列表: 

  1. from  collections import Counter 
  2.  
  3. ages = [22, 22, 25, 25, 30, 24, 26, 24, 35, 45, 52, 22, 22, 22, 25, 16, 11, 15, 40, 30] 
  4.  
  5. value_counts  = Counter(ages) 
  6.  
  7. print(value_counts.most_common()) 

counter.py hosted with ❤ by GitHub

如果讀者要運(yùn)行上述代碼(建議使用這個(gè)高效率工具),就會(huì)得到以下輸出: 

  1. [(22, 5), (25, 3), (24, 2), (30,2), (35, 1), (40, 1), (11, 1), (45, 1), (15, 1), (16, 1), (52, 1), (26, 1)] 

按最常見的順序排列的元組列表,其中元組中首先包含值,然后是計(jì)數(shù)。所以可以迅速地從中看到22歲是最常見的年齡,頻率為5次,還有年齡只出現(xiàn)了一次。完成了!

DefaultDict

這是筆者的最愛之一。DefaultDict是在首次遇到每個(gè)鍵時(shí)使用默認(rèn)值初始化的多功能字典。接下來是一個(gè)實(shí)例。 

  1. From collections  import defaultdict 
  2.  
  3. my_default_dict  = defaultdict(int
  4.  
  5. for letter in'the red  fox ran as fast as it could'
  6.  
  7.     my_default_dict[letter] +=1 
  8.  
  9. print(my_default_dict) 

defaultdict.py hosted with ❤ by GitHub

返回 

  1. defaultdict(<type 'int'>,{'a': 4, ' ': 8, 'c': 1, 'e': 2, 'd': 2, 'f': 2, 'i': 1, 'h': 1, 'l': 1, 'o':2, 'n': 1, 's': 3, 'r': 2, 'u': 1, 't': 3, 'x': 1}) 

通常,當(dāng)嘗試訪問一個(gè)不在字典中的值時(shí),就會(huì)出現(xiàn)顯示錯(cuò)誤的界面。還有其他方法可以處理這個(gè)問題,但是它會(huì)添加一些多余的代碼當(dāng)用戶希望使用默認(rèn)值的時(shí)候。在上面的例子中,用int初始化了defauldict,這意味著在第一次訪問時(shí),將它假設(shè)為0,所以可以很容易地對(duì)所有字符進(jìn)行計(jì)數(shù),簡潔明了。另一個(gè)常見的初始化是list,它允許用戶在第一次訪問時(shí)立即開始附加值。

NamedTuple

NamedTuple對(duì)于數(shù)據(jù)科學(xué)家的意義至關(guān)重要。接下來這個(gè)場(chǎng)景聽起來可能十分熟悉, 由于喜歡list,所以正在進(jìn)行特征工程,只需將這些特征添加到相對(duì)應(yīng)的類中,然后將其輸入到機(jī)器學(xué)習(xí)模型中。當(dāng)?shù)玫綌?shù)百個(gè)特征時(shí),情況就會(huì)變得十分混亂。對(duì)于具體用到的特性,或引用了列表中的哪個(gè)索引模棱兩可。更糟糕的是,當(dāng)其他人查看代碼時(shí),他們面對(duì)這一大堆的特性根本無從下手。

輸入NamedTuples來解決這個(gè)窘境。

僅僅只需要多寫幾行代碼,混亂的列表立刻就會(huì)恢復(fù)秩序。如下圖所示: 

  1. from  collections import namedtuple 
  2.  
  3. Features  = namedtuple('Features', ['age''gender''name']) 
  4.  
  5. row =  Features(age=22, gender='male'name='Alex'
  6.  
  7. print(row.age) 

namedtuple.py hosted with ❤ by GitHub

如果要運(yùn)行這段代碼,它就會(huì)印出“22”的字樣,即特征用戶存儲(chǔ)在行中的年齡。簡直不可思議!現(xiàn)在,大可不必使用索引來訪問,取而代之的是一些易于理解的名稱,這大大提高了代碼的可維護(hù)性和整潔度。

這些功能都有助于編寫更加簡潔的代碼。

看到這里,讀者應(yīng)該對(duì)collections庫和它的一些很棒的功能有了一些了解,趕緊使用起來吧!

你會(huì)驚訝地發(fā)現(xiàn)它們很多隱藏的用處,以及它給你的代碼帶來的質(zhì)的改變。

盡情享受它們帶來的便利!

動(dòng)動(dòng)你的小手手,一起來試試吧~

責(zé)任編輯:華軒 來源: 讀芯術(shù)
相關(guān)推薦

2020-02-17 15:49:11

Python開發(fā)

2022-02-09 08:49:37

架構(gòu)

2018-03-26 09:39:06

大數(shù)據(jù)IT互聯(lián)網(wǎng)

2017-11-09 15:29:21

CPU溫度常識(shí)

2023-08-29 07:52:09

CSS庫網(wǎng)絡(luò)動(dòng)畫

2019-01-03 14:30:04

數(shù)據(jù)庫優(yōu)化索引

2023-02-26 23:33:02

SQLMySQL數(shù)據(jù)庫

2013-01-06 14:21:53

Ubuntu系統(tǒng)

2021-04-27 07:52:18

跳槽數(shù)據(jù)分析

2021-10-25 14:55:38

Linux技巧命令

2011-05-10 10:56:29

DBA面試

2021-06-04 10:11:07

鴻蒙安卓操作系統(tǒng)

2022-08-11 08:46:23

索引數(shù)據(jù)結(jié)構(gòu)

2018-02-06 09:40:25

PythonOOP繼承

2020-04-03 18:43:21

大數(shù)據(jù)Hadoop數(shù)據(jù)

2024-05-06 00:30:00

MVCC數(shù)據(jù)庫

2018-01-02 09:31:12

大數(shù)據(jù)數(shù)據(jù)互聯(lián)網(wǎng)

2019-05-08 16:00:48

人工智能人臉識(shí)別刷臉

2021-03-30 10:37:15

Windows 10Windows微軟

2023-08-28 07:39:49

線程調(diào)度基本單位
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)