常用模块

Posted liliudong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用模块相关的知识,希望对你有一定的参考价值。

常用模块

collections模块

  • 在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
    1. namedtuple: 生成可以使用名字来访问元素内容的tuple
    2. deque: 双端队列,可以快速的从另外一侧追加和推出对象
    3. Counter: 计数器,主要用来计数
    4. OrderedDict: 有序字典
    5. defaultdict: 带有默认值的字典

namedtuple

  • 生成可以使用名字来访问元素内容的tuple

      from collections import namedtuple
      Point = namedtuple(‘Point‘, [‘x‘, ‘y‘])
      p = Point(2, 3)
      print(p.x)
      print(p.y)
      print(p[0])
      print(p[1])
      #结果
      2
      3
      2
      3

deque

堆栈和队列了解

  1. 堆栈
    • 先进后出
  2. 队列
    • 先进先出

        import queue
        q = queue.Queue()
        q.put(9)    #放进去9
        q.put(10)   #放进去10
        q.put(11)   #放进去11
        q.get() #取出9
        q.get() #取出10
        q.get() #取出11
        q.get() #队列阻塞

双端队列

  • 双端队列,可以快速的从另外一侧追加和推出对象
  • deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈

      from collections import deque
      q = deque([‘a‘, ‘b‘, ‘c‘])
      q.append(‘e‘)   #在列表的后方添加‘e‘
      q.appendleft(‘1‘)   #在列表的左边添加‘1‘
      q.pop() #从列表的后方拿出‘e‘
      q.popleft() #从列表的前方拿出‘1‘
      q.insert(2, ‘f‘)    #向列表 index=2 处插入‘f‘

OrderedDict

  • 有序字典

      from collections import OrderedDict
      # 创建一个无序的字典
      ## 常规方法
      dic1 = {‘k1‘:‘value1‘, ‘k2‘:‘value2‘, ‘k3‘:‘value3‘}
      ## 另外一种方法
      dic2 = dict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘)])
      # 创建有序字典 -创建的字典会保持创建时key的顺序排列
      dic3 = OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘)])

defaultdict

  • 带有默认值的字典

      from cellections import defaultdict
      #创建一个没有默认值的空字典
      dic1 = {}
      #尝试调用空字典不存在的key
      dic1[‘key‘] #将会报错
      #创建一个含有默认值的空字典
      dic2 = defaultdict(list/set/dict/lambda : x)    #传入的参数必须是可调用的,不能是字符串或者数字
      dic2[‘key‘] #key不存在,但会默认返回一个空列表

时间模块

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

    常用方法

  • time.sleep(secs)让线程休息secs秒
  • time.time() 获得时间戳
    • 给计算机看的时间float类型
    • 时间戳表示的是从1970年1月1日08:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
  • time.strftime()格式化的时间字符串

      %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
        time.strftime(‘%Y-%m-%d %H:%M:%S‘)
        #输出的结果
        2018-10-01 12:30:00
  • time.localtime()结构化时间
    • 元组,计算用的
    • 调用元组中元素的名字获取元组中数据(联系可命名元组)

        tm_yeat     年
        tm_mon      月
        tm_mday 日
        tm_hour 小时
        tm_min      分
        tm_sec      秒
        tm_wday 周几
        tm_yday 一年中第几天
        tm_isdst    是否是夏令时(默认否 tm_isdst=0)

时间类型间的转换

1. 时间戳<-->结构化时间<-->格式化字符串时间

  • 时间戳<-->结构化时间

      import time
      #时间戳-->结构化时间
      t = time.time()
      time.localtime(t)   #当地时间,参数t可以不传,默认打印当前时间的结构化时间
      time.gmtime(t)  #转换成伦敦时间
    
      #结构化时间-->时间戳
      t = time.localtime()    #获取当前时间的结构化时间
      time.mktime(t)  #结果是个时间戳
  • 格式化字符串时间<-->结构化时间

      import  time
      #格式化字符串时间-->结构化时间
      time.strptime(‘2018-10.2‘, ‘%Y-%m.%d‘)  #获得元组类型的格式化时间
      #结构化时间-->格式化字符串时间   
      t1 = time.localtime() 
      time.strftime(‘%Y/%m/%d %H:%M:$S‘, t1)  #传入两个参数,格式和结构化时间

2. 格式化时间-->字符串结构化时间<--时间戳

  • 格式化时间-->字符串结构化时间

      import time
      t1 = time.localtime()
      time.asctime(t1)    #得到格式化字符串时间,参数可以不传,默认参数time.time()  
  • 时间戳-->格式化字符串时间

      import time
      t1 = time.time()
      time.ctime(t1)  #得到格式化字符串时间,参数可以不传,默认参数time.time()  

作业

  1. 计算2017-09-11 08:30:00和2017-09-12 11:00:00之间的时间差,差了年月日时分秒

random模块

  • random.random()
    • 产生0-1之间的小数
  • random.randint(n, m)
    • 产生(n, m]区间的整数
  • random.range(n, m, step)
    • 产生(n, m)步长为step的随机整数
  • random.choise([‘x‘, ‘y‘, ‘z‘])
    • 随机在‘x‘, ‘y‘, ‘z‘三个元素中返回一个元素
  • random.sample([‘x‘, ‘y‘, ‘z‘], n)
    • 随机在‘x‘, ‘y‘, ‘z‘三个元素中返回n个元素
  • random.shuffe(item)
    • 随机打乱次序

os模块

  • os模块是与操作系统交互的一个接口

      os.makedirs(‘dirname1/dirname2‘)    可生成多层递归目录
      os.removedirs(‘dirname1‘)    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
      os.mkdir(‘dirname‘)    生成单级目录;相当于shell中mkdir dirname
      os.rmdir(‘dirname‘)    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中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
      os.path.abspath(path) 返回path规范化的绝对路径
      os.path.split(path) 将path分割成目录和文件名二元组返回 
      os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 
      os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
      os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
      os.path.isabs(path)  如果path是绝对路径,返回True
      os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
      os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
      os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
      os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
      os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
      os.path.getsize(path) 返回path的大小

sys模块

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

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

以上是关于常用模块的主要内容,如果未能解决你的问题,请参考以下文章

Python 常用模块学习

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

C#常用代码片段备忘

swift常用代码片段

# Java 常用代码片段

# Java 常用代码片段