Python3中数字、日期以及时间

1、取整操作---round(value,ndigits)函数

round(3.14,1)
3.1
round(2.28,1)
2.3
round(3.1415926,3)
3.142

当某个值恰好等于两个整数之间的一半时,取整操作会取到离该值最接近的那个偶数上。(针对python3,python2并非如此)

python3:

round(3.5)
4
round(4.5)
4

python2:

round(3.5)
4.0
round(4.5)
5.0

py2和py3输出结果的类型也有所不同,一个输出int,一个输出float。

参数ndigits也可以是负数,这种情况下会相应的取整到十位、百位、千位等。

round(1234567,-1)
1234570
round(1234567,-2)
1234600

2、对数值格式化输出

format(3.1415926,'0.2f')
'3.14'
format(1234.56789,'>10.1f')
'    1234.6'
format(1234.56789,'^10.1f')
'  1234.6  '

其中^、<、>分别是居中、左对齐、右对齐,后面跟的数字表示宽度

format(4425.3861,',')
'4,425.3861'
format(4425.3861,',.1f')
'4,425.4'

','表示对整数部分每三位数字进行分割

format(415.3861,'e')

'e'表示用科学计数法显示。

3、random模块

random.chioce()---从序列中随机选出元素

import random

li=[1,3,5,7,2,4,6,8]

random.choice(li)
Out[3]: 5

random.choice(li)
Out[4]: 5

random.choice(li)
Out[5]: 6

random.choice(li)
Out[6]: 2

random.choice(li)
Out[7]: 3

random.choice(li)
Out[8]: 4

random.choice(li)
Out[9]: 6

random.choice(li)
Out[10]: 8

选出N个元素

random.sample(li,3)
Out[11]: [4, 2, 6]

random.sample(li,4)
Out[12]: [4, 6, 3, 5]

random.sample(li,5)
Out[13]: [2, 3, 7, 6, 8]
a=[1,2,3,4]

random.shuffle(a)

a
Out[16]: [4, 1, 3, 2]

如果在原序列中原地打乱元素的顺序(洗牌),可以使用random.shuffle()

a=[1,2,3,4]

random.shuffle(a)

a
Out[16]: [4, 1, 3, 2]

random.randint()----产生随机整数

 random.randint(1,8)
Out[30]: 2

In [31]: random.randint(1,8)
Out[31]: 4

In [32]: random.randint(1,8)
Out[32]: 7

In [33]: random.randint(1,8)
Out[33]: 1

In [34]: random.randint(1,8)
Out[34]: 2

In [35]: random.randint(1,8)
Out[35]: 3

random.random()---产生0到1之间均匀分布的浮点数值

In [37]: random.random()
Out[37]: 0.6197353765835416

In [38]: random.random()
Out[38]: 0.35377782988497564

In [39]: random.random()
Out[39]: 0.5645677476085343

random.uniform()---产生均匀分布值

4、日期时间

datetime模块完成不同时间单位的换算。

In [42]: from datetime import timedelta

In [43]: a=timedelta(days=3,hours=8)

In [44]: b=timedelta(hours=2)

In [45]: c=a+b

In [46]: c.days
Out[46]: 3

In [47]: c.seconds
Out[47]: 36000

In [48]: c.seconds/3600
Out[48]: 10.0

In [49]: c.total_seconds()
Out[49]: 295200.0

In [50]: c.total_seconds()/3600
Out[50]: 82.0
In [51]: from datetime import datetime

In [52]: a=datetime(2018,5,16)

In [53]: a
Out[53]: datetime.datetime(2018, 5, 16, 0, 0)

In [54]: print(a+timedelta(days=10))
2018-05-26 00:00:00

In [55]: b=datetime(2018,6,12)

In [56]: d=b-a

In [57]: d.days
Out[57]: 27

In [58]: now=datetime.today()

In [59]: print(now)
2018-05-16 10:04:35.613223

In [60]: print(now+timedelta(minutes=20))
2018-05-16 10:24:35.613223
In [61]: from dateutil.relativedelta import relativedelta

In [62]: a=datetime(2018,2,8)

In [63]: a+relativedelta(months=+1)
Out[63]: datetime.datetime(2018, 3, 8, 0, 0)

In [64]: a+relativedelta(months=+15)
Out[64]: datetime.datetime(2019, 5, 8, 0, 0)

In [65]: b=datetime(2018,5,1)

In [66]: d=b-a

In [67]: d
Out[67]: datetime.timedelta(82)

In [68]: print(d)
82 days, 0:00:00

In [69]: relativedelta(b,a)
Out[69]: relativedelta(months=+2, days=+23)

In [70]: relativedelta(b,a).months
Out[70]: 2

In [71]: relativedelta(b,a).days
Out[71]: 23

5、将字符串转换为日期

str_datetime='2018-5-8'

In [87]: res=datetime.strptime(str_datetime,'%Y-%m-%d')

In [88]: now=datetime.now()

In [89]: dif=now-res

In [90]: dif
Out[90]: datetime.timedelta(8, 47661, 159201)

参考:

1、Python Cookbook中文版




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值