Python 学习之路(四)

Python 学习之路(四)

以下所用的是Python 3.6

一、时间模块(time 模块)

实例环境为Ubuntu 14.04 python 3.6 导入time模块。注:可以在命令行输入: help(time.方法名字)查看帮助文档,例:help(time.localtime)

1.1 概述

  • 在Python中,通常有这几种方式表示时间:a.时间戳 b.格式化的时间字符串 c.元组(struct_time 共九种元素)。由于Python的time模块主要是调用C库实现的,所以在不同的平台可能会有所不同。
  • UTC(世界协调时),亦即格林威治天文时间,也是世界标准时间。在中国为UTC+8。DST夏令时。
  • 时间戳(timestamp)的方式:时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()等。
  • 元组方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。

1.2 time.time()方法

使用time模块需要先导入time模块

获取当前时间戳

1>>> import time 2>>> 3>>> time.time() 41519398250.5167336

1.3 time.localtime([secs])方法

将一个时间戳转换为当前时区的struct_time, 如果secs参数未提供,则以当前时间为准(默认调用time.time())

1>>> time.localtime() 2time.struct_time(tm_year=2018, tm_mon=2, tm_mday=23, tm_hour=23, tm_min=14, tm_sec=4, tm_wday=4, tm_yday=54, tm_isdst=0)

元组键值含义:

1tm_year :年 2tm_mon :月(1-123tm_mday :日(1-314tm_hour :时(0-23) tm_min :分(0-59) tm_sec :秒(0-59) tm_wday :星期几(0-6,0表示周日) tm_yday :一年中的第几天(1-366) tm_isdst :是否是夏令时(默认为-1

1.4 time.sleep(secs)方法

线程睡眠指定时间,单位为秒

>>> time.sleep(2) #睡眠2S

1.5 time.gmtime([secs])方法

将一个时间戳转换为UTC时区的struct_time,不加参数则传入当前时间

1>>> time.gmtime() 2time.struct_time(tm_year=2018, tm_mon=2, tm_mday=23, tm_hour=15, tm_min=12, tm_sec=13, tm_wday=4, tm_yday=54, tm_isdst=0)

1.6 time.asctime([secs])方法

把一个表示时间的元组或者struct_time表示为 'Sat Feb 24 18:05:31 2018' 这种形式。如果没有给参数,会将time.localtime()作为参数传入。

1>>> time.asctime() 2'Sat Feb 24 18:05:31 2018'

1.7 time.ctime([secs])

把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果没有指定参数,将会默认使用time.time()作为参数。它的作用相当于time.asctime(time.localtime(secs))

1>>> time.ctime(1000) 2'Thu Jan 1 08:16:40 1970'

1.8 time.mktime(t)

time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。必须传入参数。

1>>> time.mktime(time.localtime()) 21519468401.0

1.9 time.strftime( format [, t] )

根据格式规范将时间元组转换为字符串。有关格式化代码,请参阅库参考手册。 当时间元组不存在,则使用localtime()返回的当前时间。其中format:格式化字符串; t :可选的参数是一个struct_time对象

1%Y 以世纪作为十进制数。 2%m 月作为十进制数[01,12]3%d 一个月中的一天作为十进制数[01,31]4%H 小时(24小时制)作为十进制数[00,23]5%M 分钟作为十进制数[00,59]6%S 秒作为十进制数[00,61]7%z 与UTC的时区偏移量。 8%a Locale的缩写星期几名称。 9%A 区域设置的完整星期几名称。 10%b 区域设置的缩写月份名称。 11%B Locale的全月名称。 12%c 区域设置的适当日期和时间表示。 13%I 小时(12小时制)作为十进制数[01,12]14%p Locale相当于AMPM15 16>>> test_time = time.localtime() #获取当前时间 17>>> print(test_time) 18time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24, tm_hour=18, tm_min=41, tm_sec=58, tm_wday=5, tm_yday=55, tm_isdst=0) 19>>> time.strftime("%Y年%m月%d %H:%M:%S",test_time) #格式化输出日期 20'2018年02月24 18:41:58'

1.10 time.strptime(string[,format])

将格式字符串转化成struct_time. 该函数是time.strftime()函数的逆操作。time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。函数返回的是struct_time对象。 其中string:字符串;format:格式化字符串

1>>> print(test_time) 22018-02-24 18:41:58 3>>> time.strptime(test_time,"%Y-%m-%d %H:%M:%S") 4time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24, tm_hour=18, tm_min=41, tm_sec=58, tm_wday=5, tm_yday=55, tm_isdst=-1)

1.11 time.clock()

这个函数, 函数以浮点数计算的秒数返回当前的CPU时间。该函数有两个功能:

  • 在第一次调用的时候,返回的是程序运行的实际时间;
  • 第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔在win32系统下,这个函数返回的是真实时间(wall time),而在Unix/Linux下返回的是CPU时间。

1.12 元组时间获取

通过元组的key获取

1>>> import time 2>>> x = time.localtime(100000) 3>>> print(x.tm_year) 41970

二、随机数random模块

实例环境为Ubuntu 14.04 python 3.6,导入random模块。 Python中的random模块用于生成随机数。

2.1 random.random()

random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0

1>>> random.random() 20.6782385026141206

2.2 random.uniform(a,b)

用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。

1>>> random.uniform(10,20) 211.956772292516312

2.3 random.randint(a, b)

返回一个随机整数N,a <= N <= b。 randrange(a, b+1)的别名。

1>>> random.randint(1,9) 28

2.4 random.randrange(start, stop[, step])

从range(start, stop, step)返回一个start到end范围内的随机整数,start,end,step都是整数,不包含end,可以指定step。

返回0~99的随机偶数

1>>> random.randrange(0,100,2) 240

2.5 random.choice(sequence)

从序列中获取一个随机元素,sequence为有序类型

1>>> random.choice(("book1","book2","book3")) 2'book3'

2.6 random.shuffle(x[, random])

原地搅乱序列x。可选参数random是一个具有0个参数的函数,返回一个[0.0, 1.0)之间的随机浮点数;默认情况下为函数random()。

1>>> list = ["Hello", "python", "world!"]; 2>>> random.shuffle(list) 3>>> print ("随机排序后 : ", list) 4随机排序后 : ['world!', 'python', 'Hello']

2.7 random.sample(sequence, k)

从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。sequence:序列,k:获取的元素个数

1>>> list = [x for x in range(1, 10)] #列表生成式 2>>> get_list = random.sample(list,5) #获取liest样本中的5个元素 3>>> print(list) 4[1, 2, 3, 4, 5, 6, 7, 8, 9] 5>>> print(get_list) 6[5, 2, 6, 4, 1]

2.8随机分布函数

random.triangular(low, high, mode) 返回随机浮点数 N 使得 low <= N <= high. 返回遵循在low和hagh之间的特定 模式. 低和高边界默认为零和一。模式参数默认为边界之间的中点,给出对称分布。

random.betavariate(alpha, beta) Beta分布。参数条件 alpha > 0 and beta > 0. 返回值的范围为0到1。

random.expovariate(lambd) 指数分布。lambd为1.0除以所需平均值。它应该是非零的。(该参数将被称为“lambda”,但这是Python中的保留字。)如果lambd为正,返回值的范围为0到正无穷大,如果lambd为负,则从负无穷大到0。

random.gammavariate(alpha, beta) 伽玛分布。参数条件 alpha > 0 and beta > 0.

random.gauss(mu, sigma) 高斯分布。mu是平均值,sigma是标准偏差。这稍微快于下面定义的normalvariate()函数。

random.lognormvariate(mu, sigma) 对数正态分布。如果采用此分布的自然对数,您将得到平均值mu和标准偏差sigma的正态分布。mu可以具有任何值,并且sigma必须大于零。

random.normalvariate(mu, sigma) 正态分布。mu是平均值,sigma是标准偏差。

random.vonmisesvariate(mu, kappa) mu是平均角度,以弧度表示,介于0和2 * pi之间,kappa是浓度参数,必须大于或等于零。 如果kappa等于零,则该分布在0到2 * pi的范围内降低到均匀的随机角度。

random.paretovariate(alpha) 帕累托分布。alpha是形状参数。

random.weibullvariate(alpha, beta) Weibull分布。alpha是缩放参数,beta是形状参数。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python之time模块的时间戳、时间字符串格式化与转换

Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y