tuple是元组,它是能够表示一个不变的集合好比一个坐标的点就能够表示成:python
p = (1,2)
实际上咱们经过一个这样的元组很难想象它是已个坐标轴app
numedtuple有名元组表示函数
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(1, 2) p.x # 1 p.y # 2
namedtuple是一个函数,它用来建立一个自定义的tuple对象,而且规定了tuple元素的个数,并能够用属性而不是索引来引用tuple的某个元素。学习
这样一来,咱们用namedtuple能够很方便地定义一种数据类型,它具有tuple的不变性,又能够根据属性来引用,使用十分方便。code
# 默认字典 from collections import defaultdict # 用匿名函数来给他一个默认值 dic = defaultdict(lambda :'nan') # dic = {} # 若是找不到赋了一个默认值 dic['a'] = 1 print(dic['a']) print(dic['c'])
使用list存储数据时,按索引访问元素很快,可是插入和删除元素就很慢了,由于list是线性存储,数据量大的时候,插入和删除效率很低。对象
deque是为了高效实现插入和删除操做的双向列表,适合用于队列和栈:索引
list追加值-->线性表队列
lis = [1,2,3] # 线性表 lis.append(4) print(lis) # [1,2,3,4]
用deque实现向表的两端都追加元素,这就是双端列表的特性io
from collections import deque # 链表 de = deque([1,2,3]) de.append(4) print(de) de.appendleft(0) print(de) de.popleft() de.popleft() print(de)
是一个简单的计数器,例如,统计字符出现的个数:class
咱们以前学习数据类型的时候,计数都是用字典来实现的
from collections import Counter s= 'programming' c = Counter() # 字典 for i in s: c[i] +=1 print(c) # Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})