collections模块是数据类型的扩展模块,一些非常重要但平常又不经常使用的数据类型都放在该模块
单端队列的特点:
import queue
q = queue.Queue()
q.put(1)
# put()放入值
print('大小%s' % q.qsize())
q.put('a')
print('大小%s' % q.qsize())
q.put((1,2,3))
print('大小%s' % q.qsize())
q.put({'k1': 'k2'})
print('大小%s' % q.qsize())
print(q)
# <Queue.Queue instance at 0x10b13c098>
print(q.get())
# 获取到的是最先放进去的值:1
'''
结果是:
大小1
大小2
大小3
大小4
<Queue.Queue instance at 0x101f8e0e0>
1
'''
from collections import deque
dq = deque()
# 创建双端队列对象
dq.append(1)
dq.append({'k1':'k2'})
# 往队列中添加数据
dq.append(23456)
dq.appendleft('123245')
dq.appendleft((1,2,3,4,5))
print(dq)
# 输出的数据为列表形式
dq.pop()
print(dq)
dq.pop()
print(dq)
dq.remove('123245')
print(dq)
dq.popleft()
print(dq)
dq.insert(1, 1)
print(dq)
'''
deque([(1, 2, 3, 4, 5), '123245', 1, {'k1': 'k2'}, 23456])
deque([(1, 2, 3, 4, 5), '123245', 1, {'k1': 'k2'}])
deque([(1, 2, 3, 4, 5), '123245', 1])
deque([(1, 2, 3, 4, 5), 1])
deque([1])
deque([1, 1])
'''
namedtuple创建新的数据类型,基本的步骤为:
from collections import namedtuple
Rectagle = namedtuple('Ractangle_class', ['length', 'width'])
# 类名 = namedtuple('对类的描述', [类的参数名1, 参数名2...])
# 这个类实际上相当于创建了一个新的数据类型
r = Rectagle(100, 50)
# 实例化类
print(r.length)
print(r.width)
# 实例化对象是一个元组,可以通过属性来访问
print(r)
print(r[1])
print(r[0])
# 也可以通过下标索引来访问
'''
100
50
Ractangle_class(length=100, width=50)
50
100
'''
正常的字典,当调用一个字典中没有的key时程序会报错,但是当通过defaultdict创建的字典如果调用没有字典中没有的key的时候不会报错,会返回一个默认值。
具体步骤:
'''python定义好的数据类型'''
from collections import defaultdict
d = defaultdict(int, name='alex', age=19)
print(d['name'])
print(d['age'])
print(d['gender'])
'''
alex
19
0
'''
'''自定义函数作为工厂'''
from collections import defaultdict
def func():
return 'dict'
# 函数不能有参数
d = defaultdict(func, name='alex', age=100)
print(d['name'])
print(d['age'])
print(d['gender'])
'''
alex
100
dict
'''
通过计数器可以获取对象中每一个元素出现的次数,并以字典的格式来返回, key为元素, value为该元素出现的次数。
具体用法:
from collections import Counter
c = Counter([1,2,3,4,5,634,23,44,2,4,25,2,52,6,2,3,2,4,2,4,6,7])
print(c.most_common(4))
print(c)
print(c.popitem())
print(c)
'''
[(2, 6), (4, 4), (3, 2), (6, 2)]
Counter({2: 6, 4: 4, 3: 2, 6: 2, 1: 1, 5: 1, 634: 1, 23: 1, 44: 1, 25: 1, 52: 1, 7: 1})
(7, 1)
Counter({2: 6, 4: 4, 3: 2, 6: 2, 1: 1, 5: 1, 634: 1, 23: 1, 44: 1, 25: 1, 52: 1})
'''
注意:放入计数器中的对象必须是可哈希的,即可以迭代的对象
原文:https://www.cnblogs.com/ddzc/p/12317722.html