python 6
作者:互联网
目录
collections模块
包含了一些特殊的容器,针对Python内置的容器,例如list、dict、set和tuple,提供了另一种选择;
1.namedtuple(具名元组)
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.点数)
2.deque(双端队列)
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() # 左边弹出元素
3.OrderedDict(有序字典)
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'])
4.defaultdict(含默认值字典)
'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)
5.Counter(hash对象计数)
'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')) # 可以当成字典使用
time模块
1.常用方法
1.time.sleep(secs)
推迟指定的时间运行,单位为秒
2.time.time()
获取当前时间戳
2.三种用于表示时间的格式(彼此之间可以转换)
timestamp(时间戳)
距离1970年1月1日0时0分0秒至此相差的秒数
time.time()
struct_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
format time(格式化时间)
人最容易接收的一种时间格式 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 | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
3.时间类型的转换
格式化时间 <==> 结构化时间 <==> 时间戳
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时间比我所在的区域时间早八个小时(时区划分)
datetime模块
'datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。'
import datetime
1.date
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
2.datetime
datetime.today() # 返回一个表示当前本地时间的datetime对象;年月日 时分秒
3.timedelta
'使用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对象 = 日期对象 +/- 日期对象
"""
random模块
'''随机数模块'''
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)) # 随机抽取一个 抽奖
标签:00,timedelta,python,datetime,时间,time,print 来源: https://www.cnblogs.com/RainKz/p/16074526.html