首页 > 编程语言 > 详细

python全栈闯关--19-python常用模块collections(命名空间、队列、双端队列、有序字典、defaultdict)

时间:2020-03-31 19:15:28      阅读:76      评论:0      收藏:0      [点我收藏+]

1、namedtuple

定义一个namedtuple:

namedtuple(‘数据类型名‘, [属性列表])

from collections import namedtuple

Point = namedtuple(point, [x, y, z])
p1 = Point(1, 2, 3)
p2 = Point(3, 2, 1)
print(p1.x)
print(p1.y)
print(p1.z)

print(p1)
print(p2)

card = namedtuple(card, [suits, number])
c1 = card(黑桃, 2)
print(c1)
print(c1.number)
print((c1.suits))

 

2、队列

2.1 队列

import queue
q = queue.Queue()  # 可以指定队列最大长度
for x in range(30):
    q.put(x)

print(q.get()) #当没有值得时候,阻塞等待
print(q.qsize())
print(q.get()) #当没有值得时候,阻塞等待
print(q.qsize())
print(q.get()) #当没有值得时候,阻塞等待
print(q.qsize())
print(q.get()) #当没有值得时候,阻塞等待
print(q.qsize())

队列调用Queue时,可以指定最大长度,超过最大长度,不报错,但是队列也使用不了

q.get()获取值,获取队列中的值,无值时阻塞等待

q.put()向队列中推送值

q.qsize()获取队列的长度

 

2.2 双端队列

from collections import deque

q = deque([1,2])
print(q)
q.append(a)
q.append(b)
print(q)
q.insert(3,c)
print(q)
print(q.pop())
print(q)
print(q.popleft())
print(q)

q.append(‘a‘)最末尾追加元素

q.insert(3,‘c‘) 在索引3的位置插入c,索引从0开始

q.pop 删除对尾撒上的值,并返回

q.popoleft 删除对头的值,并返回

 

3、有序字典

from collections import OrderedDict
import random
od = OrderedDict([(a,1),(b,2),(c,3)])
print(od)

有序字典的键值是固定顺序的

 

4、defaultdict

from collections import defaultdict
# 设置默认值为列表[]
d = defaultdict(list)
print(d[k])

# 设置默认值为5
d = defaultdict(lambda :5)
# 键值不存在返回5
print(d[k])

 

python全栈闯关--19-python常用模块collections(命名空间、队列、双端队列、有序字典、defaultdict)

原文:https://www.cnblogs.com/zxw-xxcsl/p/12605994.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!