这个collections库相当于是一个仓库,里面储存了一些常用的集合类,也就是一个集合,把一些本来需要自己定义的类整合到了一起,这样直接使用collections库就行了。
其中内置的类有:
-
namedtuple
-
deque
-
defaultdict
-
OrderedDict
-
Counter
namedtuple
其中namedtuple是一个工厂函数,通过它来构造一个带字段名的元组,比如说坐标,namedtuple的具名元组的实例和普通元组消耗的内存是一样多的,这是因为字段名都被存在了对应的类里面。但是这个类跟普通的对象实例比起来也要小一些的,因为 Python 是不会使用 __dict__ 存存这些实例的属性。我们都知道tuple以表可示不变集合,例如,一个点的二维坐标就可以表示成p = (1, 2),但是我们如果只看(1,2)的话,是和很难感觉出这是坐标的。如果我们定义一个类的话,虽然可以明确的表达出来(1,2)是一个坐标,但是未免有点杀鸡用牛刀了,有点小题大做。这个时候 namedtuple就应命运而生了。
deque
在使用list储存数据的时候,发现按照索引访问元素的时候很快,但是如果插入或删除元素的话,就很慢了。这是因为什么呢?因为list是线性存储,所以它在数据量很大的时候,插入或删除的效率都是很低的。deque是一个为了实现插入或删除操作时都很快的函数,它为了高校实现插入和删除操作的双向列表,很适合于队列和栈。deque除了实现你了list的删除和增加,它还支持appendleft()和popleft(),因为前文说过它是为了提高效果,而支持这两个函数的话就会非常高效的操作列表了。
defaultdict
在使用dict的时侯,如果我们要引用的Key是不存在的话,那么程序就会抛出异常--KeyError。但是假如我们希望如果key不存在的时候,程序返回的是一个默认值,那我们就可以用defaultdict。
当然,我们要使用这个函数的时候,记得要在最前面定义一下如果不存在的时候返回什么默认值。
Counter
Counter它是一个很简单的计数器,功能还挺多,比如说统计字符出现的个数。这个是常规的方法
OrderedDict
如果我们想要保持字典的顺序的话,可以使用一下OrderedDict,通过OrderedDict就可以保持字典的顺序。好了,以上就是一些collections常出现的一些集合类了,其余的还是需要自己查询得,推荐可以通过.py文件来进行阅读。
如果有什么不懂的可以在评论区留言,我会在看到的时候进行回复的。
推荐阅读官方文档--->https://docs.python.org/zh-cn/3/library/collections.html