Python 学习之路(四)

Stella981
• 阅读 345

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模块

获取当前时间戳

>>> import time
>>> 
>>> time.time()
1519398250.5167336

1.3 time.localtime([secs])方法

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

>>> time.localtime()
time.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)

元组键值含义:

tm_year :年
tm_mon :月(1-12)
tm_mday :日(1-31)
tm_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,不加参数则传入当前时间

>>> time.gmtime()
time.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()作为参数传入。

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

1.7 time.ctime([secs])

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

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

1.8 time.mktime(t)

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

>>> time.mktime(time.localtime())
1519468401.0

1.9 time.strftime( format [, t] )

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

%Y 以世纪作为十进制数。
%m 月作为十进制数[01,12]。
%d 一个月中的一天作为十进制数[01,31]。
%H 小时(24小时制)作为十进制数[00,23]。
%M 分钟作为十进制数[00,59]。
%S 秒作为十进制数[00,61]。
%z 与UTC的时区偏移量。
%a Locale的缩写星期几名称。
%A 区域设置的完整星期几名称。
%b 区域设置的缩写月份名称。
%B Locale的全月名称。
%c 区域设置的适当日期和时间表示。
%I 小时(12小时制)作为十进制数[01,12]。
%p Locale相当于AM或PM。

>>> test_time = time.localtime() #获取当前时间
>>> print(test_time)
time.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)
>>> time.strftime("%Y年%m月%d %H:%M:%S",test_time) #格式化输出日期
'2018年02月24 18:41:58'

1.10 time.strptime(string[,format])

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

>>> print(test_time)
2018-02-24 18:41:58
>>> time.strptime(test_time,"%Y-%m-%d %H:%M:%S")
time.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获取

>>> import time
>>> x = time.localtime(100000)
>>> print(x.tm_year)
1970

二、随机数random模块

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

2.1 random.random()

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

>>> random.random()
0.6782385026141206

2.2 random.uniform(a,b)

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

>>> random.uniform(10,20)
11.956772292516312

2.3 random.randint(a, b)

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

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

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

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

返回0~99的随机偶数

>>> random.randrange(0,100,2)
40

2.5 random.choice(sequence)

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

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

2.6 random.shuffle(x[, random])

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

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

2.7 random.sample(sequence, k)

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

>>> list = [x for x in range(1, 10)] #列表生成式
>>> get_list = random.sample(list,5) #获取liest样本中的5个元素
>>> print(list)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(get_list)
[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是形状参数。

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
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
Karen110 Karen110
1年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
Wesley13 Wesley13
1年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
1年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Wesley13 Wesley13
1年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
1年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
6个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为