time 库的使用
time库是Python中处理时间的标准库。
提供系统级精确计时功能用于程序性能分析;提供获取系统时间并格式化输出功能。
时间获取
>>>import time
>>>time.time() #返回一个时间戳,即计算机内部时间值,浮点数
1555291246.2271936
>>>time.ctime() #获取易读形式的时间,字符串类型
'Mon Apr 15 09:20:47 2019'
>>>time.gmtime() #获取当前时间,表示为计算机可处理的时间格式
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=15, tm_hour=1, tm_min=20, tm_sec=48, tm_wday=0, tm_yday=105, tm_isdst=0)
时间格式化
>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2019-04-15 01:31:52'
>>>timeStr = '2019-04-15 01:31:52'
>>>time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=15, tm_hour=1, tm_min=31, tm_sec=52, tm_wday=0, tm_yday=105, tm_isdst=-1)
程序计时
对于运行时间较长的程序,往往需要先进行小规模(短时间)的实验,并根据实验结果预估最终程序的大致运行时间。
参考“1000万次循环计时”代码,在jupyter下运行。
datatime 库的使用
Python 时间处理的标准函数库 datatime 提供了一批显示日期和时间的格式化方法。
datetime模块定义了5个类
- datetime.date: 日期表示类,年月日
- datetime.time: 时间表示类,小时、分钟、秒、毫秒
- datetime.datetime:日期时间表示类,覆盖以上
- datetime.timedelta:时间间隔有关类
- datetime.tzinfo:时区有关信息表示类
>>>import datetime
>>>print(datetime.date.today()) #输出当前系统日期
2019-04-15
>>>time.time()
1555293597.9980886
>>>time.time()
>>>print(datetime.date.fromtimestamp(time.time())) #将时间戳格式转换为日期格式
2019-04-15
>>>str_to_date = datetime.datetime.strptime("15/04/19 09:58","%d/%m/%y %H:%M") #将字符串转换成日期格式
>>>print(str_to_date)
2019-04-15 09:58:00
calender 库的使用
calendar模块有很广泛的方法用来处理年历和月历。
函数 | 描述 |
---|---|
calendar.calendar(year, w=2, l=1, c=6, m=3) | 返回一个多行字符串格式的year年年历。 |
calendar.firstweekday() | 返回当前每周起始日期的设置。默认返回0,即星期一。 |
calendar.isleap(year) | 闰年返回True,否则False。 |
calendar.leapdays(y1, y2) | 返回y1到y2之间的闰年总数,包含y1,不包含y2。 |
calendar.month(year, month, w=2, l=1) | 返回一个多行字符串格式的year年month月日历。 |
calendar.monthcalendar(year,month) | 返回一个整数的单层嵌套列表。每个子列表装载一个星期。该月之外的日期都为0,该月之内的日期设为该日的日期,从1开始。 |
calendar.monthrange(year, month) | 返回两个整数组成的元组,第一个是该月的第一天是星期几,第二个是该月的天数。 |
calendar.prcal(year, w=2, l=1, c=6) | 相当于print calendar.calendar(year) |
calendar.setfirstweekday(weekday) | 设置每周起始日期码。0(星期一)到6(星期日) |
calendar.timegm(tupletime) | 和time.gmtime相反,接收一个时间元组,返回该时刻的时间戳(计算机元年之后的秒数) |
calendar.weekday(year, month, day) | 返回给定日期的星期码,0(星期一)到6(星期日)。 |
>>>import calendar
>>>print(calendar.month(2019, 4))
April 2019
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
>>> calendar.isleap(2019) #判断其是否为闰年
False
>>> calendar.isleap(year=2020)
True
>>> calendar.weekday(2019,4,15)
0
random 库的使用
随机运算的标准函数库 random 共提供 9 个常用函数。
此模块可以生成随机浮点数、整数、字符串;随机选择列表序列中的一个元素;打乱一组数据。
函数 | 描述 |
---|---|
seed(a=None) | 初始化随机数种子,默认值为当前系统时间 |
random() | 生成一个 [0.0, 1.0) 之间的随机小数 |
randint(a, b) | 生成一个 [a, b] 之间的整数 |
randrange(start, stop[, step]) | 生成一个 [start, stop) 之间以 step 为步长的随机整数 |
uniform(a, b) | 生成一个 [a, b] 之间的随机小数 |
choice(seq) | 从序列类型,例如列表中随机返回一个元素 |
shuffle(seq) | 将序列类型中元素随机排列,返回打乱后的序列 |
sample(pop, k) | 从pop类型中随机选取k个元素,以列表类型返回 |
其中前2个为基本随机数函数,后7个为扩展随机数函数。
引用random库
- import random
- from random import *
- from random import random
>>>import random
>>>print(random.uniform(2, 5))
2.446029488582863
>>>from random import *
>>>uniform(2, 5)
2.783550402060669
>>>random.choice(["Serena","Williams","&","Gayle","King"])
'Gayle'
盖尔·金对小威的访谈 可以看看小威闲谈 ← 脱下球衣战袍也是一位可爱母亲☺️
伪随机数
伪随机数是用确定性的算法计算出来自[0,1]均匀分布的随机数序列。并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。在计算伪随机数时,若使用的初值(种子)不变,那么伪随机数的数序也不变。伪随机数可以用计算机大量生成,在模拟研究中为了提高模拟效率,一般采用伪随机数代替真正的随机数。模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数,以保证计算结果的随机性。
>>>import numpy as np
>>>num=0
>>>while(num<5):
>>> np.random.seed(1)
>>> print(np.random.random())
>>> num+=1
0.417022004702574
0.417022004702574
0.417022004702574
0.417022004702574
0.417022004702574
>>>num1=0
>>>np.random.seed(2)
>>>while(num1<5):
>>> print(np.random.random())
>>> num1+=1
0.43599490214200376
0.025926231827891333
0.5496624778787091
0.4353223926182769
0.42036780208748903
#参考代码 只要未改变种子,得到的随机数就不会改变。