zoukankan      html  css  js  c++  java
  • os、sys模块collecttions、time、functools、random、迭代器的补充

    一.collections,time时间,functools,random模块。

    二.迭代器

    三函数的嵌套。

    三函数的嵌套。

    一.collections,time时间,functools,random模块.

     (一)collections模块

    1.Counter:一个计数器,主要用来计数.

    low: 
    s = "alex like pig" 
    dic = {} 
    for c in s:
        dic[c] = dic.get(c, 0) + 1 
    print(dic) 
    nb: 
    s = "alex like pig" 
    print(Counter(s)) # 获取到的结果可以像字典一样进行使用  [key]

     2.deque双向队列(具体内容详见day22.模块)

    from collections import deque  #创建双向队列,该模块创建的队列,在取值时,如果取空了,会报错.
    d = deque() # 创建双向队列
    d.append("宝宝") #  在右侧添加
    d.append("哈哈")
    d.appendleft("娃哈哈") # 在左边添加
    d.appendleft("爽歪歪")print(d.pop()) # 从右边拿数据
    print(d.pop()) # 从右边拿数据
    print(d.popleft()) # 从左边拿数据
    print(d.popleft()) # 从左边拿数据
    import queue  #创建队列,该模块创建的队列取值是如果取没了,不会报错.
    q = queue.Queue()
    q.put("李嘉诚")
    q.put("张师兄")
    print(q) 
    #打印结果:<queue.Queue object at 0x000001F77C1482E8>
    print(q.get()) print(q.get())

    4.orderdict和defaultdict

    5.namedtuple  命名元组

    from collections import namedtuple
    nt = namedtuple("point",["x","y"]) #自己定义一个元组,其实就是创建一个小型的类
    p = nt(1,2)
    print(p)
    print(p.x)
    print(p.y)

    (二)time时间模块

    时间有三种:

    时间戳(time.time()): 时间戳使用的是从1970年年01月01日 00点00分00秒到现在一共经过了多少秒... 使用float来表示.

    格式化时间(time.strftime()). 这个时间可以根据我们的需要对时间进行任意的格式化. 

    结构化时间(struct_time). 这个时间主要可以把时间进行分类划分. 比如. 1970 年01月01日 00点00分00秒  这个时间可以被细分为年, 月, 日.....一大堆东西. 

    ,展现给客户需要转换

    格式化时间:

    import time
    s = time.strftime("%Y-%m-%d %H:%M:%S")    # 此时间为现在系统的格式化时间.
    print(s)
    输出结果为:
    2018-12-27 07:30:19

    结构化时间:

    print(time.localtime()) 
    结果: 
    time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)

     

    格式化时间转换成时间戳时间
    user_input = 2020-10-01 04:18:12  #格式化时间
    # 格式化时间转化成结构化时间  time.strptime(字符串时间,格式)
    struct_time = time.strptime(user_input, "%Y-%m-%d %H:%M:%S")
    num = time.mktime(struct_time)  # 转化成时间戳
    print(num) #输出结果是一个数字
    把时间戳时间,转换成格式化时间
    a = 188888
    t = time.localtime(a) # 结构化的本地东八区的时间
    # t = time.gmtime(a) # 格林尼治时间
    s = time.strftime("%Y-%m-%d %H:%M:%S", t)# 把一个结构化时间转化成格式化时间
    print(s)

     (三)functools模块

    ①wraps()  #给装饰器中的inner改名字

    from functools import wraps # 可以改变一个函数的名字, 注释...
    def wrapper(fn):
        @wraps(fn)  # 把inner的名字改变成原来的func
        def inner(*args, **kwargs):
            print("")
            ret = fn(*args, **kwargs)
            print("")
            return ret
        return inner
    @wrapper # func = wrapper(func)
    def func():
        print('哈哈哈')
    print(func.__name__) # func

     ②reduce #跟map相对的

    reduce(function, iterable[, initializer]) 函数会对参数序列中元素进行累积。
    
    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
    #map() 映射
    print(list(map(lambda x:x**2,[i for i in range(10)])))
    输出结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    print(reduce(lambda x,y:x*y,[i for i in range(1,10)]))
    输出结果:362880

    3)partial()  偏函数(固定函数中某些参数的值)

    from functools import partial
    def chi(zhushi, fushi):
        print(zhushi, fushi)
    chi2 = partial(chi, fushi="辣鸡爪")
    chi2("大米饭")
    chi2("小米饭")
    打印结果为:
    大米饭 辣鸡爪
    小米饭 辣鸡爪

    (四)randome模块 (关于随机的模块)

    import random
    print(random.random)
    print(random.uniform(3,10)) #3-10的小数
    print(random.randint(3,10)) #3-10的整数
    print(random.randrange(1,10,2)) #1-10的奇数
    print(random.choice([1,"周杰伦",["感伦,'胡辣汤"]])) #列表元素任意2个组合
    print(random.sample(([1, '23', [4, 5]], 2)) ) # 1或者23或者[4,5])
    lst = [1, 2, 3, 4, 5, 6, 7, 8]
    random.shuffle(lst) #随机打乱顺序
    print(lst)

     另外补充一个: round()函数,方法返回浮点数x的四舍五入值(不准确)。相关连接解释:    http://www.runoob.com/w3cnote/python-round-func-note.html

    如果距离两边一样远,会保留到偶数的一边。比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2.四舍五入前的数是奇数,是四舍五如;是偶数,则是五设六入
    在用round()函数进行四舍五入时,如果你对结果有十足把握,并且这就是你想要的结果,那就放心大胆地使用。不然就老老实实写个函数来实现吧,这不是什么难事

    (五)os模块(操作系统相关的模块)import os

    os.makedirs('dirname1/dirname2') #可生成多层递归目录
    os.removedirs('dirname1')#删除指定路径的空目录,一直删除到不为空的目录
    os.mkdir('dirname1') #生成单级目录
    os.rmdir('dirname1') #删除单级空目录,如果目录不为空则报错.
    os.listdir('dirname1') #列出指定目录下的所有文件和子目录,包括隐藏文件,列表形式返回
    os.remove('dirname1') #删除一个文件,可以给绝对路径
    os.rename('dirname1','dirname2')#从新命名
    os.stat('path/filename') #获取文件/目录的信息
    os.urandom(n)    #随机生成n个字节字符串(函数返回的随机字节是根据不同的操作系统特定的随机函数资源。即,这个函数是调用OS内部自带的随机函数的。有特异性)
    os.getcwd() #获取当前工作目录,即当前python脚本的工作目录路径
    os.chdir("dirname") #改变当前脚本的工作目录.
    
    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) #判断是否为绝对路径,返回值True/False
    os.path.isfile(path) #判断是否存在该文件,返回值True/False
    os.path.isdir(path) #判断是否存该目录,True/False
    os.path.join(path1,[path2,[...]])#讲多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    os.path.getsize(path) #返回path的大小

     (六)sys模块(解释器相关的模块)

    import sys
    sys.version() #获取py解释器程序的版本信息
    sys.path() #返回值是该模块的搜索路径,初始化时使用py环境变量的值
  • 相关阅读:
    转载
    转载
    HDU
    HDU
    Hdu
    转载
    HDU
    UVa
    HDU
    POJ
  • 原文地址:https://www.cnblogs.com/lgw1171435560/p/10182921.html
Copyright © 2011-2022 走看看