一些模块

一、collections模块
collections模块主要封装了⼀些关于集合类的相关操作,如Counter, deque, OrderDict, defaultdict以及namedtuple 等。

1 Counter:计算可迭代对象里的元素出现次数,返回一个字典。并且可以对计算的次数和iterable进行如相加的操作。

1.1计算字符串中字符的出现次数

>>> collections.Counter('aaabbbbbccccdd')
Counter({'b': 5, 'c': 4, 'a': 3, 'd': 2})

 

1.2 还可以自己选择计数的元素,此时返回的是一个由元祖组成的列表。排列顺序是先按照次数多的排列,如果次数相同,先出现的先排列(collections.Counter('aaaAAAAbbbbbccccdd1111').most_common(3),3表示需计算的元素个数)

>>> collections.Counter('aaaAAAAbbbbbccccdd1111').most_common(3)
[('b', 5), ('A', 4), ('c', 4)]

 

1.3 支持2个可迭代对象的计数相加,相减,集合的与,或等操作,举例:‘abbb'和'abcc’的计数结果相加

>>> collections.Counter('abbb') + collections.Counter('abcc')
Counter({'b': 4, 'a': 2, 'c': 2})

 

2 deque 双向队列,队列queue,栈

队列和栈是两种常用的数据结构,它们特点是1.队列-FIFO即First in First Out,先进先出;2.栈-FILO即先进最后出;而双向队列是TITO(Two In Two out)两头进,两头出

2.1 队列,用起来非常简洁明了,.put加队列,.get出队列

>>> import queue
>>> q=queue.Queue()
>>> q.put('第一个')
>>> q.put('第二个')
>>> q.get()
'第一个'
>>> q.get()
'第二个'

如果队列没元素了还往外取元素,此时程序会阻塞。

>>> q.get()
PS:一直停在这里,等待着,像交通阻塞一样

2.2 双向队列

双向队列和队列一样,只是进队列变成.append,出队列变成.pop。注意,deque是在collections 模块中的。

>>> from collections import deque
>>> q = deque()
>>> q.append('第一个') # 默认从右边添加
>>> q.append('第二个')
>>> q.appendleft('左边第一个') # 左边添加
>>> q.appendleft('左边第二个')
>>> q
deque(['左边第二个', '左边第一个', '第一个', '第二个'])
>>> q.pop()
'第二个'
>>> q.popleft() # 左边删除
'左边第二个'

2.3 栈

栈和队列相反,先进后出,在python里栈是有上限的,为1000,但是可以手动修改。或者可以这样理解:栈是一个可以手动修改大小的特殊的有序表。

一个栈最起码要有3个属性:1.容器,即用来放栈的地方;2.大小,规定了这个容器的容量;3 栈顶指针,即下一个元素的定位,定位元素以便能拿取元素

 

3 namedtuple 命名元组
对元素进行命名

>>> s = namedtuple('sky',['x','y','z'])
>>> obj = s(1,2,3)
>>> obj
sky(x=1, y=2, z=3)
>>> obj.z
3

 

4 对字典进行操作

orderdict:把字典变成有序字典

defaultdict: 可以给字典设置默认值. key不存在时. 直接获取默认值 。注意,默认值必须是可调用对象,如函数

 

二  time 模块

time模块是一个常用的模块,记住时间戳和字符串的转换,还有UTC时间和local时间的区别,其他的用到时再查看文档。

时间戳转字符串:stamp--(time.gmtime(t))-->struct_time--(time.strftime(format,time_tuple))-->str

字符串转时间戳: str--(time.strptime(str,format)-->struct_time--(time.mktime(time_tuple))-->stamp

除了localtime外,其他用的是UTC时间,起始时间是1970-01-01

 

三 random模块

random模块处理随机数

.random() # 0-1的小数

.uniform(m,n) #m-n的小数

.randint(m,n) # m-n的整数

.choice(iterable) # 循环可迭代对象

.sample(iterable,n) # 可迭代对象里取n个数

.shuffle(iterable)# 打乱顺序

四 os模块

与操作系统交互的模块,os.popen('cmd').read() # 执行操作系统命名cmd并拿到结果

os.path.* 处理与环境变量相关的东西

 

五 sys模块

处理与python解释器相关的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-12-04 12:53  Freedom_L  阅读(131)  评论(0编辑  收藏  举报