这一篇教程,我们继续了解内置模块。
六、collections模块
这个模块中,我们只了解一块内容,deque类型的使用。
deque(double ended queue)是双端队列。
按官方文档的说法,这是一个类似列表的容器,能够在两端快速插入(好爽)和弹出元素。
具体的使用方法,通过示例代码就能够直观的了解。
示例代码:
from collections import deque deq = deque((2, 3, 4, 5, 6)) # 序列转为双端 print(deq) # 显示输出结果为:deque([2, 3, 4, 5, 6]) deq.appendleft('开始') # 队列左侧添加单个元素 print(deq) # 显示输出结果为:deque(['开始', 2, 3, 4, 5, 6]) deq.append('结尾') # 队列右侧添加单个元素 print(deq) # 显示输出结果为:deque(['开始', 2, 3, 4, 5, 6, '结尾']) print(deq.pop()) # 弹出右侧最后一个元素,显示输出结果为:结尾 print(deq) # 显示输出结果为:deque(['开始', 2, 3, 4, 5, 6]) print(deq.popleft()) # 弹出左侧第一个元素,显示输出结果为:开始 print(deq) # 显示输出结果为:deque([2, 3, 4, 5, 6]) deq.rotate(2) # 所有元素循环(末尾元素移动至最左侧)向右移动2个位置 print(deq) # 显示输出结果为:deque([5, 6, 2, 3, 4]) deq.rotate(-1) # 所有元素循环(首个元素移动至最右侧)向左移动1个位置 print(deq) # 显示输出结果为:deque([6, 2, 3, 4, 5]) deq.extend([7, 8]) # 逐一读取列表元素并增加到队列右侧 print(deq) # 显示输出结果为:deque([6, 2, 3, 4, 5, 7, 8]) deq.extendleft([1, 0]) # 逐一读取列表元素并增加到队列左侧 print(deq) # 显示输出结果为:deque([0, 1, 6, 2, 3, 4, 5, 7, 8])
除了上述的这些方法,还有一些其它比较通用的方法,例如:copy、count、remove……等等,在此不做演示。
七、time模块
在编程开发中,往往需要获取系统日期时间,或者对日期时间对象进行一些操作。
这里,我们来了解一下time模块为我们提供的功能。
示例代码:
import time print(time.time())
我们先导入time模块,然后调用time()函数,看一下获取到的内容。
获取到的内容类似:1508381851.557155
这是一个自1970年1月1日起到当前系统时间的秒数(小数点后方为毫秒、微秒和纳秒)。
那么,如何获取一个时间的字符串呢?
示例代码:
print(time.asctime()) # 显示输出结果类似于:Thu Oct 19 11:05:26 2017
对于国内用户来说,这个函数通常没什么卵用,我们更希望获取到具体的年、月、日、时、分、秒的数值,然后加上中文和冒号。
就像:2017年10月19日 12:01:25
是不是感觉有些熟悉?
没错,在教程《Python3萌新入门笔记(34)》中我们使用过获取时间元组的函数。
示例代码:
print(time.localtime())
运行代码,我们能够看到一个时间的元组。
类似于:time.struct_time(tm_year=2017, tm_mon=10, tm_mday=19, tm_hour=11, tm_min=10, tm_sec=9, tm_wday=3, tm_yday=292, tm_isdst=0)
在本地时间的元组中包含的元素依次为:年,月,日,时,分,秒,星期几,本年第几天,是否夏令时(1为真,0为假,-1为未知)。
这个元组中的内容,我们就能够通过元组的索引取到了。
示例代码:
print(time.localtime()[0]) # 显示输出结果为:2017
既然毫秒能够变为时间的元组,那么,时间的元组也能转换为毫秒。
示例代码:
print(time.mktime((2017, 10, 19, 12, 0, 0, 0, 0, 0))) # 显示输出结果为:1508385600.0
mktime方法需要提供9个整数参数,这些参数和localtime()方法获取到的时间元组相一致。
接下来,有一个非常重要的方法,它用于让Python解释器等待一段时间。
示例代码:
for i in range(5): print(time.time()) time.sleep(1)
运行代码,显示结果为:
1508383373.3071938
1508383374.3072512
1508383375.3073082
1508383376.3073654
1508383377.3074226
sleep()函数能够让解释器等待指定的秒数,所以上方循环获取系统时间的代码,输出的结果都间隔1秒钟(有一些微秒级的误差)。
另外,还有一个strptime()函数,能够将日期时间字符串转换为时间元组。
这个函数有两个参数,参数string为时间字符串,参数format是格式化字符串。
示例代码:
print(time.strptime('2017-10-19 14:01:23','%Y-%m-%d %H:%M:%S'))
运行代码,显示输出结果为:
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=19, tm_hour=14, tm_min=1, tm_sec=23, tm_wday=3, tm_yday=292, tm_isdst=-1)
这里我们需要掌握的是格式化字符串中需要写的转换说明符。
- %y:两位数的年份(00~99)
- %Y :四位数的年份(0000~9999)
- %m:月份(1~12)
- %d:天数(1~31)
- %H 24小时制小时数(0~23)
- %I 12小时制小时数(1~12)
- %M 分钟数(0~59)
- %S 秒(0~61) # 没看错,因为有闰秒和双闰秒的存在。
- %a 本地简化英文星期名称
- %A 本地完整英文星期名称
- %b 本地简化英文月份名称
- %B 本地完整英文月份名称
- %c 标准日期时间
- %j 年积日(1-366)
- %p 本地AM或PM的等价显示
- %U 年中第几周(0-53,以星期日为第一天)
- %w 星期一(0)至星期日(6)的数值(0-6)
- %W 年中第几周(0-53,以星期一为第一天)
- %x 标准日期
- %X 标准时间
- %Z 当前时区英文名称
- %% %号
八、datetime模块
datetime模块也是一个用于操作日期时间的模块。
这个模块中也为我们提供了一些易用的功能。
例如,模块里面的datetime类,能够创建日期时间对象,也能够获取系统当前日期时间。
示例代码:
import datetime date = datetime.datetime(2017, 10, 19) # 创建日期时间对象 print(date) # 显示输出结果为:2017-10-19 00:00:00 now = datetime.datetime.now() # 获取系统当前日期时间 print(now) # 显示输出结果类似于:2017-10-19 14:17:11.483406 print(now.year, now.month, now.day, now.hour, now.minute, now.second, now.weekday()) # 获取年、月、日、时、分、秒和周几,显示输出结果类似于:2017 10 19 14 17 11 3
在datetime类中还有today()方法,获取的是系统当前的日期时间对象。
示例代码:
date = datetime.datetime.today() print(date) # 显示输出结果类似于:2017-10-19 16:12:53.564471
而且,我们还可以通过datetime类中的timetuple()方法,获取日期时间对象的元组。
print(datetime.datetime.timetuple(date))
显示输出结果类似于:time.struct_time(tm_year=2017, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=17, tm_sec=6, tm_wday=3, tm_yday=292, tm_isdst=-1)
另外,datatime模块还有一个date类。
示例代码:
print(datetime.date.today()) # 显示输出结果类似于:2017-10-19
而且,在datatime模块中还有timedelta,能够对日期时间对象进行计算。
date = datetime.datetime(2017, 10, 19) # 创建日期时间对象 print(date) # 显示输出结果为:2017-10-19 00:00:00 print(date.date()) # 获取日期时间对象中的日期,显示输出结果为:2017-10-19 print(date + datetime.timedelta(days=-1)) # 日期减少1,显示输出结果为:2017-10-18 00:00:00 print(date + datetime.timedelta(days=1)) # 日期增加1,显示输出结果为:2017-10-20 00:00:00 print(date + datetime.timedelta(hours=-1)) # 小时减少1,显示输出结果为:2017-10-18 23:00:00 print(date + datetime.timedelta(minutes=-1)) # 分钟减少1,显示输出结果为:2017-10-18 23:59:00 print(date + datetime.timedelta(seconds=-1)) # 秒数减少1,显示输出结果为:2017-10-18 23:59:59
dtaetime模块的功能并不仅仅这么多,其它功能大家可以查询官方文档了解。
本节知识点:
1、双端队列
2、time模块
3、datetime模块
本节英文单词与中文释义:
1、double:双重
2、queue:队列
3、collection:收集
4、rotate:旋转
5、extend:扩展
6、struct:结构
7、strp(parse a string):解析字符串
8、delta:增量
9、sleep:睡眠
转载请注明:魔力Python » Python3萌新入门笔记(40)