python--内置常用模块(一)

1.模块的简单认识

  模块就是我们把装有特定功能的代码进行归类的结果.从代码编写的单位来看我们的程序,从小到大的顺序:一条代码 < 语句块 < 代码块(函数,类) < 模块,我们目前写的所有的py文件都是模块,引入模块的方式:

  1.import模块

  2.from xxx import 模块

2.collections模块

coleections模块主要封装了一些关于集合类的相关操作.比如,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})

  

二. 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

    def pop(self):  #出栈
        if self.top == 0:
            raise StackEmptyExcepiton("栈已放空")
        self.top -= 1
        el = self.lst[self.top]
        return el
s = Stack(6)
s.push("1")
s.push("2")
s.push("3")
s.push("4")
s.push("5")
s.push("6")

print(s.pop()) #6
print(s.pop()) #5
print(s.pop()) #4
print(s.pop()) #3
print(s.pop()) #2
print(s.pop()) #1

 

2.deque: 双向队列

from collections import deque
d = deque()  # 创建双向队列
d.append("1")  # 在右侧添加
d.append("2")
d.append("3")  # deque(['1', '2', '3'])

d.appendleft("0")  # 在左侧添加 deque(['0', '1', '2', '3'])

print(d.pop())  # 从右边拿数据 3
print(d.popleft())  # 从左边拿数据 0

  

3.namedtuple 命名元组

给元组内的元素进行命名吗.这是一个元组(x,y).同时,我们还可以认为这是一个点坐标.这时,我妈们可以使用namedtuple对元素进行命名

from collections import namedtuple

nt = namedtuple("point",["x","y"])
p = nt(1,2)
print(p)  # point(x=1, y=2)

print(p.x)  # 1
print(p.y)  # 2

  

4. orderdict 有序字典  ,  defaultdict默认值字典

字典的key是默认无序的在python3.3以前体现的很明显,时常打印出的字典顺序混乱,orderdict是有序的

from collections import OrderedDict
dic = OrderedDict()
dic["a"] = "你好"
dic["b"] = "哈哈"

print(dic)  # OrderedDict([('a', '你好'), ('b', '哈哈')])
print(dic.get("a"))  # 你好
print(dic.values())  # odict_values(['你好', '哈哈'])
print(dic["a"])  # 你好

  

defaultdict: 可以给字典设置默认值.当key不存在时.直接获取默认值:

from collections import defaultdict

dd = defaultdict(list)
print(dd["哇哈哈"])  # []
print(dd)  # defaultdict(<class 'list'>, {'哇哈哈': []})

dd2 = defaultdict(lambda : 0) # callable 可调用的,字典是空的
print(dd2["优乐美"])  # 0
print(dd2)  # defaultdict(<function <lambda> at 0x000001ECF0571E18>, {'优乐美': 0})

  

三. time时间模块

时间模块是我们日常使用中经常用到的模块.

 

猜你喜欢

转载自www.cnblogs.com/robertx/p/10181379.html