北京建站工作室,各大网站收录,wordpress配置数据库失败6,房地产市场现状分析2023本篇将学习python的另一个内建模块collections,更多内容请参考:Python学习指南 collections是Python内建的一个集合模块#xff0c;提供了许多有用的集合类。 namedtuple 我们知道tuple可以表示不变集合#xff0c;例如#xff0c;一个点的二维左边就可以表示成#xff1a;… 本篇将学习python的另一个内建模块collections,更多内容请参考:Python学习指南 collections是Python内建的一个集合模块提供了许多有用的集合类。 namedtuple 我们知道tuple可以表示不变集合例如一个点的二维左边就可以表示成 p (1, 2) 但是看到(1, 2),很难看出这个tuple是用来表示一个坐标的。 定义一个class又小题大做了这时nametuple就派上了用场 from collections import namedtuplePoint namedtuple(Point, [x, y]) p Point(1, 2) p.x 1 p.y 2 namedtuple是一个函数它用来创建一个自定义的tuple对象并且规定了tuple元素的个数并可以用属性而不是索引来引用tuple的某个元素。 可以验证创建的Point对象时tuple的一种子类 isinstance(p, Point)
True
isinstance(p, tuple)
True 类似的如果要用坐标和半径表示一个园也可以用namedtuple定义 # namedtuple(名称, [属性list])
Circle namedtuple(Circle, [x, y, r]) deque 使用list存储数据时按索引访问元素很快但是插入和删除元素就很慢了因为list是线性存储数据量大的时候插入和删除效率很低。 deque是为了高效实现插入和删除操作的双向队列适合用于队列和栈 from collections import deque
q deque([a, b, c]) q.append(x) q.appendleft(y) q deque([y, a, b, c, x]) deque除了实现list的append()和pop()外还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。 defaultdict 使用dict时如果引用的Key不存在就会抛出KeyError。如果希望key不存在时返回一个默认值就可以用defaultdict: from collections import defaultdict
dd defaultdict(lambda:N/A) dd[key1] abc dd[key1] abc dd[key2] N/A 注意默认值是调用函数返回的而函数创建defaultdict对象时传入。 除了在Key不存在时返回默认值defaultdict的其他行为跟dict是完全一样的。 OrderedDict 使用dict时Key是无序的。在对dict做迭代时我们无法确定Key的顺序。 如果要保持Key的顺序可以用OrderedDict: from collections import OrderedDict
d dict([(a, 1), (b, 2), (c, 3)]) d #dict的Key是无序的 {a:1, c:3, b:3} od OrderedDict([(a, 1), (b, 2), (c,3)]) od OrderedDict([(a, 1), (b,2), (c,3)]) 注意OrderedDict的Key会按照插入的顺序排列不是Key本身排序 od OrderedDict()
od[z] 1
od[y] 2 od[x] 3 list(od.keys()) #按照插入的Key的顺序返回 [z, y, x] OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时先删除最早添加的Key: from collections import OrderedDict
class LastUpdatedOrderedDict(OrderedDict): def __init__(self, capacity): super(LastUpdatedOrderedDict, self).__init__() self._capacity capacity def __seitem__(self, key, value): containsKey 1 if key in self else 0 if len(self) - containsKey self._capacity: last self.popitem(lastFalse) print(remove:,last) if containsKey: del self[key] print(set:,(key, value)) else: print(add:,(key,value)) OrderedDict.__setitem__(self, key, value) Counter Counter是一个简单的计数器例如统计字符串出现的个数 from collections import Counter
c Counter()
for ch in programming: c[ch] c[ch] 1 c Counter({g:2, m:2, r:2, a:1, i:1, o:1, n:1, p:1}) Counter实际上也是dict的一个子类上面的结果可以看出字符g, m, r各出现了两次其它字符各出现了一次。 小结 collections模块提供了一些有用的集合类可以根据需要选用。 转载于:https://www.cnblogs.com/moying-wq/p/10134634.html