首页 > 编程语言 > 详细

Python学习日记(十五) collections模块

时间:2019-08-28 10:00:52      阅读:84      评论:0      收藏:0      [点我收藏+]

在内置函数(dict、list、set、tuple)的基础上,collections模块还提供了几个其他的数据类型:Counter、deque、defaultdict、namedtuple和OrdereDict等

1.namedtuple

作用:用于生成一个可以使用名字访问元素内容的tuple

如果要表示一个点,我们可以这样表示,但是在使用时我们很难看出这个tuple是用来表示一个坐标

p = (1,2)

因此我们调用namedtuple来解决这个问题

表示二维中的一个点:

import collections
Point = collections.namedtuple(Point,[x,y])
print(Point)        #<class ‘__main__.Point‘>
p = Point(1,2)
print(p.x)          #1
print(p.y)          #2
print(p)            #Point(x=1, y=2)

表示三维中的一个点:

import collections
Point = collections.namedtuple(Point,[x,y,z])
print(Point)        #<class ‘__main__.Point‘>
p = Point(1,2,3)
print(p.x)          #1
print(p.y)          #2
print(p.z)          #3
print(p)            #Point(x=1, y=2, z=3)

表示一个圆的属性:

import collections
Circle = collections.namedtuple(Circle,[r,d,s,l])

表示一张扑克牌:

import collections
Card = collections.namedtuple(card,[c_class,c_num])
c = Card(方块,4)
print(c.c_class)            #方块
print(c.c_num)              #4        
print(c)                    #card(c_class=‘方块‘, c_num=‘4‘)

2.deque()

这里先说一个队列quque()

队列的特性:先进先出(FIFO)

import queue
i = 1
q = queue.Queue()
q.put(5)
q.put(6)
q.put(-5)
print(q)          #<queue.Queue object at 0x0000000002082EB8>
print(q.qsize())  #3    整个队列长度为3
print(q.get())    #5
print(q.get())    #6
print(q.get())    #-5
print(q.get())    #阻塞 因为整个队列只有3个元素,当3个元素全部取出后就再也取不出新的元素,程序就会一直等待用户给它一个值

deque()双端队列,两边的头都可以取和存

from collections import deque
dq = deque([5,6])
dq.append(a)              #从后面放数据
dq.appendleft(b)          #从前面放数据
dq.insert(1,c)            #在1这个索引下加入‘c‘,原位置下的元素往后移一位
print(dq)                   #deque([‘b‘, ‘c‘, 5, 6, ‘a‘])
print(dq.pop())             #a      向后弹出一个元素‘a‘
print(dq.popleft())         #b      向前弹出一个元素‘b‘

运用队列的好处在于能够高效插入和删除操作的双向列表,适合用于队列和栈

而我们使用list,虽然访问元素速度很快但是我们要插入或删除一个元素就会慢很多,数据量大的时候后,插入和删除效率也会很低

3.OrderedDoct

有序字典

 

Python学习日记(十五) collections模块

原文:https://www.cnblogs.com/Fantac/p/11421703.html

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