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

    导入整个模块

    import 模块名

    导入模块中的某个具体的功能

    from 模块名 import 模块中的方法名(功能)

    import random
    from random import randint

    random 随机模块

    import random
    #取随机小数
    
    print(random.random())                #0~1 之间的随机小数
    print(random.uniform(1,10))           #1~10 之间的随机小数

    取随机整数

    import random
    print(random.randint(0,1))              #0~1之间的整数
    print(random.randrange(0,5))          #0~5之间的整数
    print(random.randrange(0,5,2))       #0~5之间步长为2 的整数

    随机抽取

    l = [1,2,"a",{"k":"v"},(1,2,4)]
    print(random.choice(l))                #随机抽取一个
    print(random.sample(l,3))            #随机抽取n个

    打乱顺序

    import random
    k = [1,2,"ac",{"k","v"},(1,2,3)]
    random.shuffle(k)
    print(k)

    事例: 输出6位纯数字

    import random
    def get_code(n=6):
        s = ""
        for i in range(n):
            num = random.randint(0,9)
            s += str(num)
        return s
    print(get_code(6))

    Collections

    1.Counter 计数器

    2.defaultdict 默认值字典

    3.OrderedDict 有序字典

    Counter 计数

    from collections import Counter
    print(Counter("凌寒独自开,哈哈哈"))
    
    lst = ["selina","Jerome","Jerry","selina"]
    c = Counter(lst)
    print(c)
    
    运行结果:
     Counter({'': 3, '': 1, '': 1, '': 1, '': 1, '': 1, ',': 1})
     Counter({'selina': 2, 'Jerome': 1, 'Jerry': 1})
     Process finished with exit code 0

    defaultdict 默认值字典

    from collections import defaultdict
    selina = defaultdict(lambda:6)        #callable 可调用的, 字典是空的
    print(selina["LL"])           #从字典向外拿数据, 字典是空的, key:callable()
    print(selina["Frank"])         #这里的[] 和get() 不是一回事儿
    print(selina)
    print(selina.get("LL"))
    
    运行结果:
     6
     defaultdict(<function <lambda> at 0x0000027CAB741E18>, {'ll': 6, 'Frank': 6})

    OrderedDict  有序字典

    from collections import OrderedDict
    dic = OrderedDict()
    dic["selina"] = "新加坡"
    dic["evelyn"] = "法国"
    print(dic)
    print(dic.get("selina"))
    print(dic.values())
    print(dic["evelyn"])
    
    运行结果:
     OrderedDict([('selina', '新加坡'), ('evelyn', '法国')])
     新加坡
     odict_values(['新加坡', '法国'])
     法国

    栈Stack(FILO)
    特点: 先进后出

    class StackFullException(Exception):
        pass
    
    class StackEmptyException(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("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
    s = Stack(4)
    s.push('bob')
    s.push('jack')
    s.push('Peak')
    s.push('jary')
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    
    
    import queue
    q= queue.Queue()
    q.put('中国')
    q.put('法国')
    q.put('美国')
    print(q.get())
    print(q.get())
    print(q.get())
    
    结果
    jary
    Peak
    jack
    bob
    中国
    法国
    美国

    队列Queue(FIFO)
    特点: 先进先出

    from collections import deque
    d = deque()         # 创建双向队列
    d.append('娃哈哈')  # 在右侧添加
    d.append('QQ星')
    d.append('爽歪歪')
    d.appendleft('芒果')  # 在左边添加
    d.appendleft('榴莲')
    d.appendleft('苹果')
    print(d.pop())      # 从右边拿数据
    print(d.pop())
    print(d.pop())
    print(d.popleft())  # 从左边拿数据
    print(d.popleft())
    print(d.popleft())
    结果
    爽歪歪
    QQ星
    娃哈哈
    苹果
    榴莲
    芒果

    time时间模块

    python程序中,时间一共有三种格式
    时间戳时间,float时间(给计算机用的): 1542072130.3895912
        英国伦敦 1970-1-1 0:0:0  0时区
        北京时间 1970-1-1 8:0:0
    结构化时间(tuple时间)
    格式化时间,str时间(给用户看的): '2018-11-13 9:21:50'
    时间格式转换
        时间戳时间 <-结构化时间(tuple时间)-> 格式化时间
    
    时间格式:
    %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())      # 时间戳时间(从1970-01-01 00:00:00开始经过的秒)
    print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 格式化时间
    print(time.localtime())  # 北京时间(结构化时间)
    结果
    1545826164.0164113
    2018-12-26 20:09:24
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=9, tm_sec=24, tm_wday=2, tm_yday=360, tm_isdst=0)
    
    print(time.strftime('%c'))
    time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
    time.localtime(时间戳) #当地时间,例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间
    
    
    结构化时间(python的时间)
    print(time.localtime())
    t = time.localtime()
    print(t.tm_year)
    print(t.tm_mon)
    print(t.tm_min)
    结果
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=23, tm_sec=20, tm_wday=2, tm_yday=360, tm_isdst=0)
    2018
    12
    23
    
    
    时间格式之间的转换问题
    格式化时间转换戳时间
    #先将格式化时间转换为结构化时间,然后将结构化时间转换为时间戳时间
    ret = time.strptime('2008-8-8','%Y-%m-%d')
    print(ret)
    stmp = time.mktime(ret)
    print(stmp)
    结果
    time.struct_time(tm_year=2008, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=221, tm_isdst=-1)
    1218124800.0
    
    
    时间戳转换格式化时间
    先将时间戳转换为结构化时间,然后将结构化看时间转换为格式化时间
    ret = time.localtime(1500000000)
    print(ret)
    str_time = time.strftime('%Y-%m-%d %H:%M:%S',ret)
    print(str_time)
    结果
    time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
    2017-07-14 10:40:00
    
    
    1.显示当前时间24小时之前的 年月日 时分秒
    方法一 :
    计算出1970年到现在经过的秒,然后减去一天的秒,然后转换为格式化时间
    t1 = time.time()
    print(t1)
    t2 = t1 - (60*60*24)
    print(t2)
    t3 = time.localtime(t2)
    print(t3)
    t4 = time.strftime('%Y-%m-%d %H:%M:%S',t3)
    print(t4)
    结果
    1545826916.4369211
    1545740516.4369211
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=25, tm_hour=20, tm_min=21, tm_sec=56, tm_wday=1, tm_yday=359, tm_isdst=0)
    2018-12-25 20:21:56
    
    方法二
    打印结构化时间,然后print进行填充,填充tm_mday天减1
    t1 = time.localtime()
    print(t1)
    print('%s-%s-%s %s:%s:%s'%(
    t1.tm_year,
    t1.tm_mon,
    t1.tm_mday-1,
    t1.tm_hour,
    t1.tm_min,
    t1.tm_sec))
    结果
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=13, tm_sec=24, tm_wday=2, tm_yday=360, tm_isdst=0)
    2018-12-25 20:13:24
    
    
    2.显示当前月的第一天的0:0:0的时间戳时间
    先将时间转化为结构化时间,然后转化为格式化时间
    now = time.localtime()
    print(now)
    str3 = time.strftime('%Y-%m-1 0:0:0',now)
    print(str3)
    ret2 = time.strptime(str3,'%Y-%m-%d 0:0:0')
    print(ret2)
    print(time.mktime(ret2))
    结果
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=14, tm_sec=16, tm_wday=2, tm_yday=360, tm_isdst=0)
    2018-12-1 0:0:0
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=335, tm_isdst=-1)
    1543593600.0
    
    方法二
    now = time.localtime()
    print(now)
    str1 = time.strftime('%Y-%m',now)
    print(str1)
    str2 = time.strptime(str1,'%Y-%m')
    print(str2)
    print(time.mktime(str2)
    结果
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=14, tm_sec=40, tm_wday=2, tm_yday=360, tm_isdst=0)
    2018-12
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=335, tm_isdst=-1)
    1543593600.0

    functools模块
    wraps: 可以改变一个函数的名字,注释...

    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('bob')
    print(func.__name__)
    结果
    func

    map 映射 reduce 归纳

    from functools import reduce
    def func(a, b):
        return a + b    # 0+1+4+7+2+5+8+3+6+9 累加
    ret = reduce(func, [1,4,7,2,5,8,3,6,9])
    func(func(func(0, 1),4),7)
    print(ret)
    print(reduce(lambda x, y:x + y, [i for i in range(101)]))
    
    执行流程
    会把我们每一个数据交给func去执行,把默认值作为第一个参数传递给函数
    第二个参数就是你这个序列中的第一个数据
    接下来,把刚才返回的结果作为第一个参数传递个a
    继续吧刚才的结果给第一个参数,把第三个数据传递给b
    
    结果
    45
    5050

    partial偏函数,把函数的参数固定

    from functools import partial
    def chi(zhushi, fushi):
        print(zhushi, fushi)
    # 固定函数中某些参数的值
    chi2 = partial(chi, fushi="小辣椒")
    chi2("大米饭")
    chi2("小米饭")
    chi2("白米饭")
    结果
    大米饭 小辣椒
    小米饭 小辣椒
    白米饭 小辣椒
  • 相关阅读:
    终端解析 规格严格
    用HQ时,出现了一个Bug 规格严格
    GC这篇文章介绍得很基本 规格严格
    DB2协议研究 规格严格
    JVM monitoring 规格严格
    很有趣的GC内容 规格严格
    在linux内核中修改TCP MSS值 规格严格
    最近为项目写了一个调试模块,由此想到的一些内容 规格严格
    Java中国象棋博弈程序探秘[3]——着法合法性判断
    NetBeans 时事通讯(刊号 # 10 Jun 03, 2008)
  • 原文地址:https://www.cnblogs.com/wangm-0824/p/10199661.html
Copyright © 2011-2022 走看看