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

    常用模块(collections,time,sys)

    collections

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等


    namedtuple 可命名元组

    复制代码
    from collections import namedtuple  # 可命名元组
    P = namedtuple('point',['x','y'])
    p = P(1,2)
    print(p)  # point(x=1, y=2)
    print(p.x)  # 1
    print(p.y)  # 2
    # 描述一类东西的时候,这一类东西都有相同的特征,想直接用特征的名字就描述这个值的时候就可以用可命名元组
    复制代码

    队列:一种数据结构,先进先出
    FIFO:FIRST IN FIRST OUT

    复制代码
    import queue  # 队列_多线程多进程 处理任务
    q = queue.Queue()  # 创建了一个队列q
    q.put(1)  # 往里放值
    q.put(2)
    q.put(300)
    q.put('aaa')
    q.put('wahaha')
    print(q.qsize())  # 5 查看当前队列有多大
    print(q.get())  # 1 往外拿值
    print(q.get())
    print(q.get())
    print(q.get())
    print(q.get())
    # print(q.get())  # 拿完了会等着 q.get_nowait()不等,拿完会报错
    复制代码

    deque  双端队列

    复制代码
    from collections import deque  # 双端队列
    dq = deque()
    dq.append('a')
    print(dq)  # deque(['a'])
    dq.append('b')
    dq.appendleft('c')
    print(dq)  # deque(['c', 'a', 'b'])
    print(dq.pop())  # b
    print(dq.popleft())  # c
    复制代码

    OrderedDict   有序字典

    from collections import OrderedDict  # 有序字典
    od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    for k in od:
        print(k,od[k])

    defaultdict 默认字典

    复制代码
    from collections import defaultdict
    my_dict = defaultdict(list)  # 给字典的value设置一个默认值,默认值必须是可调用的
    print(my_dict['k'])  # [] 当key不存在时,不报错,会返回设置的默认值
    
    dd = defaultdict(lambda: 'N/A')  # 默认值必须是可调用的callable
    dd['key1'] = 'abc'
    print(dd['key1'])  # key1存在 'abc'
    print(dd['key2'])  # key2不存在,返回默认值 'N/A'
    复制代码

    counter

    Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。

    from collections import Counter
    c = Counter('abcdeabcdabcaba')
    print(c)  # 输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

    time时间模块

    和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块

    import time
    time.sleep(1) # 睡1秒

    表示时间的三种格式

    在Python中,通常有这三种方式来表示时间:时间戳、结构化时间元组(struct_time)、格式化的时间字符串

    时间戳

    时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型

    time.time()  # 1500875844.800804

    格式化的时间字符串

    格式化的时间字符串(Format String): ‘1999-12-06’

    复制代码
    time.strftime("%Y-%m-%d %X")  # string format time
    '2017-07-24 13:54:37'
    time.strftime("%Y-%m-%d %H-%M-%S")
    '2017-07-24 13-55-04'
    # %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 当前时区的名称
    # %% %号本身
    复制代码

    结构化时间元组

    元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

    # 时间元组:localtime将一个时间戳转换为当前时区的struct_time
    time.localtime()  # 本地时间
    time.gmtime()  # 伦敦时间
    # time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,
    #                   tm_hour=13, tm_min=59, tm_sec=37,
    #                  tm_wday=0, tm_yday=205, tm_isdst=0)

    几种时间格式之间的转换

    复制代码
    ret = time.localtime(1000000000)  # localtime 时间戳转换为结构化时间
    print(ret)
    print(time.mktime(ret))  # mktime 结构化时间转换为时间戳
    ret2 = time.strftime('%Y-%m-%d %a %X',ret)  # strftime 结构化时间转换字符串时间
    print(ret2)
    time.strptime('1990-3-31','%Y-%m-%d')  # 字符串时间转换结构化时间
    
    print(time.asctime())  # Tue Nov 14 12:22:53 2017 括号内可以放结构化时间
    time.ctime(1000000)  # 将时间戳转换为上面的格式
    复制代码

    计算时间差例子

    start_time = 1500000000
    now = time.time()
    struct_time = time.gmtime(now -start_time)  # 将时间转换为伦敦时间后计算
    print(struct_time.tm_year - 1970)
    print(struct_time.tm_mon - 1)
    print(struct_time.tm_mday - 1)

    sys模块

    sys模块是与python解释器交互的一个接口

    sys.argv 命令行参数List,第一个元素是程序本身路径
    sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
    sys.version 获取Python解释程序的版本信息
    sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    sys.platform 返回操作系统平台名称

    复制代码
    import sys
    print(sys.platform)  # win32 操作系统平台名称
    
    print(sys.version) # python解释器的版本
    # sys.exit() 直接退出程序
    print(sys.path) # sys.path就是模块导入的时候从这个列表中的路径依次去寻找模块 # 找到了就停止 # sys.path的第一位元素是当前被执行的python文件所在的地址 # 之后的地址依次是python内部的库 # sys.argv 以列表的形式接收参数,第一个元素为执行的文件名 print(sys.argv) # python 6sys.py # python 6sys.py alex 3714 args_lst = sys.argv # ['6sys.py','alex','3714'] if len(args_lst) == 3 and args_lst[1] == 'alex' and args_lst[2] == '3714': print('执行程序了') else: sys.exit() # sys.argv 的第一个值是固定的,就是这个文件的名字 # 之后的参数实在控制台执行py文件的时候传入的参数 # 我们可以用这些参数来直接完成一些校验类的工作
  • 相关阅读:
    2021/9/23(桶排序+基数排序 结束排序)
    【转】十大经典排序算法(动画演示)
    如何测试代码执行时间
    图解排序算法之归并排序(转)
    TED演讲:拖延症人群的内心世界
    IntelliJ IDEA入门
    支付宝支付入门
    Spring Cloud 入门
    软件设计模式类型介绍
    《小狗钱钱2》读书笔记
  • 原文地址:https://www.cnblogs.com/QQ279366/p/7834102.html
Copyright © 2011-2022 走看看