自学Python--常用模块之collections模块

堆栈:先进后出

队列:先进先出

 

namedtuple:命名元组

一个点的二维坐标可以表示为:p = (1, 2)

from collections import namedtuple


Point = namedtuple('point', ['x', 'y', 'z'])
p = Point(1, 2, 3)
print(p) # point(x=1, y=2, z=3)
print(p.x, p.y, p.z) # 1 2 3

Card = namedtuple('card', ['suits', 'number'])
card1 = Card('红桃', 2)
card2 = Card('黑桃', 9)
print(card1) # card(suits='红桃', number=2)
print(card2) # card(suits='黑桃', number=9)Card = namedtuple('card', ['suits', 'number'])

 

deque:双端队列

list按索引访问速度快,但插入和删除速度慢,因为list是线性存储。deque插入和删除速度快,适用于队列和堆栈

队列:先进先出,如买票

import queue
q = queue.Queue()
q.put(1)
q.put(2)
q.put(3)
q.put(4)
q.put(5)
q.put(6)
print(q.qsize()) # 6
print(q.get()) # 1
print(q.get()) # 2
print(q.get()) # 3
print(q.get()) # 4
print(q.get()) # 5
print(q.get()) # 6
print(q.qsize()) # 0
print(q.get()) # 不输出,等待,不执行下一步

双端队列:可以从头或者尾取值

from collections import deque


q = deque([1, 2]) # [1, 2]
q.append('a') # 从后放数据 [1, 2, 'a']
q.appendleft('b') # 从前放数据 # ['b', 1, 2, 'a']
q.insert(1, 3) # 队列没有插入方法 ['b', 3, 1, 2, 'a']
print(q.pop()) # 从后取数据 'a'
print(q.popleft()) # 从前面取数据 'b'

 

OrderedDict:有序字典

from collections import OrderedDict

od = OrderedDict([('a', 1), ('b', 3), ('c', 3)])
print(od) # OrderedDict([('a', 1), ('b', 3), ('c', 3)])
print(od['a']) # 1
for i in od:
    print(i) # a,b,c

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值