zoukankan      html  css  js  c++  java
  • 常用模块

    引入模块的方式:

      1. import 模块

      2. from xxx import 模块

    collections模块

    1.Counter  计数器

    from collections import Counter
    s = 'apple pineapple'
    nb = Counter(s)    #Counter({'p': 5, 'e': 3, 'a': 2, 'l': 2, ' ': 1, 'i': 1, 'n': 1}) 

    2.deque 双向队列(栈.队列)

      1)栈 : FILO.先进先出

      2)队列 : FIFO.先进先出

    栈Stack

    class StackEmptyError(Exception):
        pass
    class StackFullError(Exception):
        pass
    class Stack:
    
        def __init__(self. size):
            self.top = 0    #栈顶指针
            self.size = size  
            self.lst = []      #存放数据的列表
        
        def push(self):
            if self.top >= self.size:
                raise StackFullException('your stack is full')
            self.lst.insert(self.top, el)
            self.top +=1
        def pop(self):
            if self.top == 0:
                raise StackEmptyException('your stack is empty')
            self.top-=1
            el = self.lst[self.top]
            return el  

     queue模块

    import queue
    q = queue.Queue()
    q.put('a')
    q.put('b')
    q.put('c')
    print(q)    #<queue.Queue object at 0x01C49C10>
    print(q.get())   #a

    deque

    from collections import deque
    q = deque()
    q.append('a')   #右侧添加
    q.append('b')
    q.appendleft('c')  #左侧添加
    q.appendleft('d')
    print(q)               #deque(['d', 'c', 'a', 'b'])
    q.pop()             #deque(['d', 'c', 'a'])
    q.popleft()            #deque(['c', 'a'])
    print(q.pop())       #a

    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

    OrderedDict和defaultdict

    字典的key默认是无序的.而OrderedDict是有序的(和普通字典操作一样,打印效果不同)

    from collections import OrderedDict
    od = OrderedDict({'b' : 'boy','c' : 'carry', 'a' : 'apple'})
    print(od)   #OrderedDict([('b', 'boy'), ('c', 'carry'), ('a', 'apple')])

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

    from collections import defaultdict
    dd = defaultdict(list)
    print(dd['a'])     #[]

    time模块***

    时间的三种形式:

    1.时间戳(timestamp).从1970年01月01日00点00分00秒开始,使用float来表示

    2.格式化时间(strftime).根据需要对时间进行任意格式化

    3.结构化时间(struct_time).把时间分类划分

    日期格式化的标准:

    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %M 分钟数(00-59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53) 星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53) 星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当地时区的名称
    %% %号本身

    时间戳

    import time
    print(time.time())    #1546518703.0296843  系统时间

    结构化时间

    st = time.time()
    t = time.localtime(st)
    print(t)    #time.struct_time(tm_year=2019, tm_mon=1, tm_mday=3, tm_hour=20, tm_min=58
    , tm_sec=21, tm_wday=3, tm_yday=3, tm_isdst=0)

    格式化时间

    s = time.strftime('%Y-%m-%d %H:%M:%S',t)
    print(s)     #2019-01-03 21:01:58

    用户输入一个时间,转化为时间戳:

    s1 ='2019-01-03 21:01:58'     #输入的时间
    t1 = time.strptime(s1, '%Y-%m-%d %H:%M:%S')   #转化成结构时间
    st1 = time.mktime(t1)    #转换成时间戳
    print(st1)                      #1546520518.0

    random随机模块

    import random
    random.random()    #0-1小数
    random.uniform(3, 10)    #3-10小数
    random.randint(1, 10)    #1-10整数
    random.randrange(1, 10, 2)  #1-10奇数[1,10)
    random.choice(['a','b','c']) #选择一个
    random.sample(['a','b','c'], 2) #列表列出任意两个组合
    l = ['a', 'b', 'c']
    random.shuffle(l)  #列表随机打乱顺序

    os模块

    os.makedirs('dirname1/dirname2')   #可生成多层递归目录
    os.removedirs('dirname1')   #若目录为空,则删除,并递归到上一级目录,如若为空,则删除,依此类推
    os.mkdir('dirname')   #生成单级目录
    os.rmdir('dirname')    #删除单级目录
    os.listdir('dirname')    #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    os.remove()    #删除一个文件
    os.rename("oldname","newname") #重命名文件/目录
    os.stat('path/filename')  #获取文件/目录信息
    
    os.system("bash command")  #运行shell命令,直接显示
    os.popen("bash command).read()   #运行shell命令,获取执行结果
    os.getcwd() #获取当前工作目录,即当前python脚本工作的目录
    os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cd
    os.path.abspath(path)  #返回规范化的绝对路径
    os.path.split(path)  # 将path分割成目录和文件名二元组返回
    os.path.dirname(path)  #返回path的目录
    os.path.basename(path)  #返回path最后的文件名
    os.path.exists(path)    #如果path存在,返回True 如果path不存在,返回False
    os.path.isabs(path)     #如果path是绝对路径,返回True
    os.path.isfile(path)     #如果path是一个存在的文件,返回True
    os.path.isdir(path)      #如果path是一个存在的目录,则返回True
    os.path.join(path1[, path2[, ...]])   #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    os.path.getatime(path)  #返回path所指向的文件或者目录的最后访问时间
    os.path.getmtime(path)   #返回path所指向的文件或者目录的最后修改时间
    os.path.getsize(path)   #返回path的大小

    sys模块

    sys.exit(n)  #退出程序,正常退出时exit(0),错误退出时sys.exit(1)
  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/gracenana/p/10211298.html
Copyright © 2011-2022 走看看