包含了一些特殊的容器,针对Python内置的容器,例如list、dict、set和tuple,提供了另一种选择;
from collections import namedtuple '''可以创建包含名称的tuple''' point = namedtuple('坐标',['x','y']) # 调用了namedtuple的元组对象 p1 = point(1,2) p2 = point(10,8) print(p1,p2) # 坐标(x=1, y=2) 坐标(x=10, y=8) print(p1.x) # 1 print(p1.y) # 2 person = namedtuple('人物','name age gender') # 调用了namedtuple的元组对象 p1 = person('jason',18,'male') p2 = person('kevin',28,'female') print(p1,p2) # 人物(name='jason', age=18, gender='male') 人物(name='kevin', age=28, gender='female') print(p1.name,p1.age) # jason 18 """具名元组的使用场景也非常的广泛 比如数学领域、娱乐领域等""" card = namedtuple('扑克牌', ['花色', '点数']) c1 = card('黑桃♠', 'A') c2 = card('黑梅♣', 'K') c3 = card('红心❤', 'A') print(c1, c2, c3) print(c1.点数)
from collections import deque '类似于list的容器,可以快速的在队列头部和尾部添加、删除元素' q = deque([1,2,3]) print(q) q.append(444) # 右边添加元素 print(q) q.appendleft(666) # 左边添加元素 print(q) q.pop() # 右边弹出元素 q.popleft() # 左边弹出元素
from collections import OrderedDict 'dict的子类,可以记住元素的添加顺序' from collections import OrderedDict d2 = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) print(d2) # OrderedDict([('a', 1), ('b', 2), ('c', 3)]) d2['x'] = 111 d2['y'] = 222 d2['z'] = 333 print(d2) # OrderedDict([('a', 1), ('b', 2), ('c', 3), ('x', 111), ('y', 222), ('z', 333)]) print(d2.keys()) # odict_keys(['a', 'b', 'c', 'x', 'y', 'z'])
'dict的子类,可以调用提供默认值的函数' from collections import defaultdict values = [11, 22, 33,44,55,67,77,88,99,90] my_dict = defaultdict(list) # 字典所有的值默认都是列表 for value in values: if value>66: my_dict['k1'].append(value) else: my_dict['k2'].append(value)
'dict的子类,计算可hash的对象' from collections import Counter r = Counter(res) print(r) # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}) print(r.get('a')) # 可以当成字典使用
1.time.sleep(secs) 推迟指定的时间运行,单位为秒 2.time.time() 获取当前时间戳
距离1970年1月1日0时0分0秒至此相差的秒数 time.time()
time.localtime() 属性 值 tm_year(年) 比如2011 tm_mon(月) 1 - 12 tm_mday(日) 1 - 31 tm_hour(时) 0 - 23 tm_min(分) 0 - 59 tm_sec(秒) 0 - 61 tm_wday(weekday) 0 - 6(0表示周日) tm_yday(一年中的第几天) 1 - 366 tm_isdst(是否是夏令时) 默认为-1
人最容易接收的一种时间格式 2000/1/21 11:11:11 time.strftime() '%Y-%m-%d %H:%M:%S' # 2022-03-29 11:31:30 '%Y-%m-%d %X' # 2022-03-29 11:31:30
格式 | 含义 |
---|---|
%a | 本地(locale)简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化月份名称 |
%B | 本地完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 一个月中的第几天(01 - 31) |
%H | 一天中的第几个小时(24小时制,00 - 23) |
%I | 第几个小时(12小时制,01 - 12) |
%j | 一年中的第几天(001 - 366) |
%m | 月份(01 - 12) |
%M | 分钟数(00 - 59) |
%p | 本地am或者pm的相应符 |
%S | 秒(01 - 61) |
%U | 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 |
%w | 一个星期中的第几天(0 - 6,0是星期天) |
%W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
格式化时间 <==> 结构化时间 <==> 时间戳 format time struct_time timestamp # 时间戳<-->结构化时间 gmtime localtime # 结构化时间<-->格式化时间 strftime strptime time.strptime("2017-03-16","%Y-%m-%d") time.strptime("2017/03","%Y/%m") 前后必须一致 ps:UTC时间比我所在的区域时间早八个小时(时区划分)
'datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。' import datetime
date.today() # 返回一个表示当前本地日期的date对象;年月日 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
datetime.today() # 返回一个表示当前本地时间的datetime对象;年月日 时分秒
'使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算。' print('microseconds:', datetime.timedelta(microseconds=1)) #microseconds: 0:00:00.000001 print('milliseconds:', datetime.timedelta(milliseconds=1)) #milliseconds: 0:00:00.001000 print('seconds :', datetime.timedelta(seconds=1)) #seconds : 0:00:01 print('minutes :', datetime.timedelta(minutes=1)) #minutes : 0:01:00 print('hours :', datetime.timedelta(hours=1)) #hours : 1:00:00 print('days :', datetime.timedelta(days=1)) #days : 1 day, 0:00:00 print('weeks :', datetime.timedelta(weeks=1)) #weeks : 7 days, 0:00:00 """ 针对时间计算的公式 日期对象 = 日期对象 +/- timedelta对象 timedelta对象 = 日期对象 +/- 日期对象 """
'''随机数模块''' import random print(random.random()) # 随机产生一个0到1之间的小数 print(random.uniform(2, 4)) # 随机产生一个2到4之间的小数 print(random.randint(0, 9)) # 随机产生一个0到9之间的整数(包含0和9) print(random.randint(1, 6)) # 掷骰子 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] random.shuffle(l) # 随机打乱一个数据集合 洗牌 print(l) ll1 = ['特等奖', '张飞抱回家', '如花', '百万现金大奖', '群内配对'] print(random.choice(ll1)) # 随机抽取一个 抽奖