Python3萌新入门笔记(40)

这一篇教程,我们继续了解内置模块。

六、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)

你可能感兴趣的:(Python3新手入门课堂)