一、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解释器相关的