|
前言
本文的翰墨及图片根源于收集,仅供进修、交换操纵,不具有任何贸易用处,版权归原作者全数,若有题目请实时联系我们以作处置赏罚。
作者: 读芯术
PS:若有需要Python进修材料的小同伴可以加点击下方链接自行获得
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
保存中,经常有一些人,明显很有本事,却不被身旁人看好。
是金子总能发光,这句话放在现实保存中,实在并不完全适用,生齿众多,不乏有才之人,想要乐成就需要一个一鸣惊人的机遇。
Python也是。
Python中有很多现成的性能不错的库。collections就是其中一个。
collections模块供给了“高性能的容器数据典范”,是通用容器字典、列表、聚集和元组的美满替换。
但却经常被人轻忽大要看轻。
本日,小芯就将积极当一个“好伯乐”,简便大白地为大家先容那些不被看好的Python库,挖掘出它们的无穷潜能。
在本文中将会向读者细致先容其中的三种数据典范,信赖在阅读完本文后,大家必定会迷惑自己之前是怎样在没有这些库的情况下完成编程。
Counter
Counter的名字很贴切——它的重要功用就是计数。这听起来很简单,但究竟证实,数据科学家经常不能不举行计数,所以它很是有用。
有几种方式可以实现初始化,但笔者凡是会设备一个以下图的值列表- 1 from collections import Counter2 ages = [22, 22, 25, 25, 30, 24, 26, 24, 35, 45, 52, 22, 22, 22, 25, 16, 11, 15, 40, 30]3 value_counts = Counter(ages)4 print(value_counts.most_common())
复制代码
counter.py hosted with by GitHub
假如读者要运转上述代码(倡议操纵这个高服从工具),就会获得以下输出:- [(22, 5), (25, 3), (24, 2), (30,2), (35, 1), (40, 1), (11, 1), (45, 1), (15, 1), (16, 1), (52, 1), (26, 1)]
复制代码
按最多见的次第排列的元组列表,其中元组中首先包含值,然后是计数。所以可以灵敏地从中看到22岁是最多见的年龄,频次为5次,还丰年龄只出现了一次。完成了!
DefaultDict
这是笔者的最爱之一。DefaultDict是在初度碰到每个键时操纵默许值初始化的多功用字典。接下来是一个实例- 1 From collections import defaultdict2 my_default_dict = defaultdict(int)3 for letter in'the red fox ran as fast as it could':4 my_default_dict[letter] +=15 print(my_default_dict)
复制代码- defaultdict.py hosted with by GitHub
复制代码 返回- defaultdict(,{'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})
复制代码
凡是,当尝试拜候一个不在字典中的值时,就会出现表现毛病的界面。还有其他方式可以处置赏罚这个题目,可是它会增加一些过剩的代码当用户盼望操纵默许值的时候。在上面的例子中,用int初始化了defauldict,这意味着在第一次拜候时,将它假定为0,所以可以很轻易地对全数字符举行计数,简便大白。另一个常见的初始化是list,它答利用户在第一次拜候时立即起头附加值。
NamedTuple
NamedTuple对于数据科学家的意义相当垂危。接下来这个场景听起来大要很是熟悉, 由于爱好list,所以正在举行特征工程,只需将这些特征增加到相对应的类中,然后将其输入到呆板进修模子中。当获得数百个特征时,情况就会变得很是混乱。对于具体用到的特征,或援用了列表中的哪个索引模棱两可。更糟糕的是,当其他人检察代码时,他们面临这一大堆的特征底子无从脱手。
输入NamedTuples来打点这个逆境。
仅仅只需要多写几行代码,混乱的列表立即就会规复次序。以下图所示- 1 from collections import namedtuple2 Features = namedtuple('Features', ['age', 'gender', 'name'])3 row = Features(age=22, gender='male', name='Alex')4 print(row.age)
复制代码
namedtuple.py hosted with by GitHub
假如要运转这段代码,它就会印出“22”的字样,即特征用户存储在行中的年龄。简直不成思议!现在,大可不必操纵索引来拜候,取而代之的是一些易于大白的称号,这大猛进步了代码的可保护性和整洁度。
这些功用都有助于编写加倍简便的代码。
看到这里,读者应当对collections库和它的一些很棒的功用有了一些了解,赶紧操纵起来吧!
你会惊奇地发现它们很多潜伏的用处,以及它给你的代码带来的质的改变。
尽情享用它们带来的便当!
动动你的小手手,一路来试试吧~
免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作! |
|