Day20

总结

re模块补充说明

import re
ret = re.findall('a(b)c', 'abcabcabcabc')
print(ret)  # ['b', 'b', 'b', 'b']
ret = re.findall('a(?:b)c', 'abcabcabcabc')
print(ret)  # ['abc', 'abc', 'abc', 'abc']
ret = re.findall('(a)(b)(c)', 'abcabcabcabc')
print(ret)   # [('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')]
ret = re.findall('(?P<aaa>a)(b)(c)', 'abcabcabcabc')
print(ret)   # [('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')]
print(ret.group('aaa'))
'''
	findall默认分组优先展示
	正则不表达式中如果有括号分组,展示结果时默认只展示括号内正则表达式匹配到的内容
	也可以通过括号前加问号冒号取消
'''

collections模块

具名元组(有名字的元组)

    from collections import namedtuple

    person = namedtuple('人','name age ')
    p1 = person('jason', 20)
    p2 = person('jack', 30)
    print(p1, p2)  # 人(name='jason', age=20) 人(name='jack', age=30)
    print(p2.age)  # 30

双端数列

队列:先进先出 默认只有一端进另外一端只能出

双端队列:两端都可以进或者出

import queue
q = queue.Queue(2)  # 最多放两个元素

q.put(1)
q.put(2)
# q.put(3)  # 如果队列满了 继续添加则原地等待

print(q.get())  # 1
print(q.get())  # 2
# print(q.get())  # 如果队列满了 继续获取则原地等待


from collections import deque
q = deque([1, 2, 3])
print(q)
q.append(4)  # 右边添加元素
print(q)
q.appendleft(5)  # 左边添加元素
print(q)
q.pop()
print(q)  # 右边弹出(删除)元素
q.popleft()  # 左边弹出(删除)元素
print(q)

有序字典

​ 正常字典都是无序的

from collections import OrderedDict
        dic = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
        print(dic)  # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
        dic['d'] = 4
        dic['e'] = 5
        dic['f'] = 6
        print(dic)  # OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6)])

计数器

​ 统计字符串中字符的个数

from collections import Counter
        res = 'aabbcddeee'
        r = Counter(res)
        print(r)  # Counter({'e': 3, 'a': 2, 'b': 2, 'd': 2, 'c': 1})
        print(r.get('a'))  # 2
        print(r.get('b'))  # 2  
        print(r.get('c'))  # 1

time模块

常用方法

# 推迟运行的时间(单位:秒)
time.sleep(5)
# 获取当前时间戳
time.time()

时间的格式表示方法

1.时间戳
	time.time()  # 1648548412.6958575
    
2.结构化时间
	# 主要给计算机识别,人看起来不方便
    time.localtime()  # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)
          0 tm_year(年)	比如2011
          1	tm_mon(月)	1 - 12
          2	tm_mday(日)	1 - 31
          3	tm_hour(时)	0 - 23
          4	tm_min(分)	0 - 59
          5	tm_sec(秒)	0 - 60
          6	tm_wday(weekday)	0 - 6(0表示周一)
          7	tm_yday(一年中的第几天)	1 - 366
          8	tm_isdst(是否是夏令时)	默认为0
        
3.格式化时间
	# 肉眼看起来最方便
    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

print(time.time())
# 时间戳和结构化时间转换
print(time.localtime(1648552728.699097))  # 将时间戳转化为结构化时间
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=29, tm_hour=19, tm_min=18, tm_sec=48, tm_wday=1, tm_yday=88, tm_isdst=0)
print(time.mktime(time.localtime()))  # 1648552766.0  mktime(t) : 将一个struct_time转化为时间戳。

结构化时间<=>格式化时间

# 结构化时间和格式化时间转换
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))  # 将结构化时间转化为格式化时间
# 2022-03-29 19:19:26

print(time.strptime('2022-03-29 19:19:26', '%Y-%m-%d %X'))  # 将格式化时间转化为结构化时间
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=29, tm_hour=19, tm_min=19, tm_sec=26, tm_wday=1, tm_yday=88, tm_isdst=-1)

datetime模块

import datetime
print(datetime.date.today())  # 2022-03-29
print(datetime.datetime.today())  # 2022-03-29 19:30:27.502270

res = datetime.date.today()
print(res.year)  # 2022
print(res.month)  # 3
print(res.day)  # 29
print(res.weekday())  # 1       星期0-6
print(res.isoweekday())  # 2    星期1-7

时间计算的公式
    日期对象 = 日期对象 +/- timedelta对象
    timedelta对象 = 日期对象 +/- 日期对象

random模块

import random
print(random.random())  #  随机产生一个0到1之间的小数  0.21309266104454927
print(random.uniform(2,4))  # 随机产生一个2到4之间的小数  2.011189729021157
print(random.randint(0,9))  # 随机产生一个0到9之间的整数(包含0和9)  0

l1 = ['特等奖', '一等奖', '二等奖', '三等奖']
print(random.choice(l1))  # 随机抽取一个  特等奖
print(random.sample(l1, 3))  # 随机抽多个  ['二等奖', '三等奖', '一等奖']

今天也有好多要记的知识,好好记吧。。。想吃米饭的第一天

:

posted @ 2022-03-29 20:51  有梦想的阿九  阅读(39)  评论(0)    收藏  举报