一. 模块的简单认识
模块就是我们把装有特定功能的代码进行归类的结果.从代码编写的单位来看我们的程序,从小到大的顺序:一条代码 < 语句块 < 代码块(函数,类) < 模块,我们目前写的所有的py文件都是模块,引入模块的方式:
1.import模块
2.from xxx import 模块
二. collections模块
collections模块主要封装了一些关于集合类的相关操作.比如,terable,Iterator等等.除了这些意外,collections还提供了一些除了基本数据类型以外的数据集合类型.Counter,deque,OrderDict,defaultdict以及namedtuple
1. Counter
counter是一个计数器,主要用来计数
from collections import Counter
print(Counter("哈哈哈你还好啊")) # 计算一个字符串中字符出现的个数 Counter({'哈': 3, '你': 1, '还': 1, '好': 1, '啊': 1})
lst = ["jay","jay","jay","哈哈","你好"]
dic = {"a":"你好","b":"你好","c":"真的好"}
l = Counter(lst)
c = Counter(dic.values())
print(l) # Counter({'jay': 3, '哈哈': 1, '你好': 1})
print(c) # Counter({'你好': 2, '真的好': 1})
2. deque 双向队列
1.先介绍两种数据结构 1.栈 2.队列
1.栈: FILO. 先进后出
2.队列:FIFO.先进先出
python中并没有给出Stack模块,所以我们写一个大概意思(这个版本有非常严重的并发问题,仅供粗略观看)
栈:
class StackFullException(Exception):
pass
class StackEmptyExcepiton(Exception):
pass
class Stack:
def __init__(self,size):
self.size = size
self.lst = []
self.top = 0 # 栈顶指针
def push(self,el): # 入栈
if self.top >= self.size:
raise StackFullException("栈已放满")
self.lst.insert(self.top,el)
self.top +=1<