一、数值
1. 格式化
- 一般形式
‘数值:{:}’.format(a[0]) - 显示正负号
‘分数:{:-}’.format(a[0]) #显示正负号 - 显示几位小数
‘数值:{:.2f}’.format(a[0]) - 显示百分比
‘分数:{:.2%}’.format(1/5)
2.小数位处理
- math.trunc() 截去小数部分
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(math.trunc,a)
print(list(result))
[-2, -2, 2, 2]
- math.ceil() 向上取整
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(math.ceil,a)
print(list(result))
[-2, -2, 3, 3]
- math.floor() 向下取整
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(math.floor,a)
print(list(result))
[-3, -3, 2, 2]
- round() 四舍五入
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(round,a)
print(list(result))
[-3, -2, 2, 3]
二、随机数
random.choice(lst)
从序列中随机选择一个元素random.sample(lst,n)
从序列中随机选择n个元素,lst的长度要比n大,否则会报错。sample是无重复抽样random.shuffle(lst)
随机打乱一个可变序列,改变原序列,无返回。不支持字符串、元组等不可变序列random.randint(a,b)
#生成指定范围内的随机整数N。 a<=N<=brandom.random()
#生成随机浮点数 [0.0, 1.0).random.getrandbits(K)
# 生成2^k位数的随机数
import random
# lst = list(range(10))
lst = list('abcde')
print('原数组:',lst)
print('choice:从序列中随机选出一个数',random.choice(lst))# 从序列中随机选出一个数
print('choice:从序列中随机选出一个数',random.choice(lst))# 从序列中随机选出一个数
print('sample:不重复地抽取3个数',random.sample(lst,3))# 从序列中随机选出3个数,返回列表
print('shuffle:随机打乱一个数组,改变原数组,无返回',random.shuffle(lst))# 随机打乱一个数,改变原数组,无返回
print('打乱后的数组:',lst)
原数组: ['a', 'b', 'c', 'd', 'e']
choice:从序列中随机选出一个数 b
choice:从序列中随机选出一个数 c
sample:不重复地抽取3个数 ['c', 'd', 'e']
shuffle:随机打乱一个数组,改变原数组,无返回 None
打乱后的数组: ['b', 'a', 'c', 'e', 'd']
import random
a = 1
b = 10
print(random.randint(a,b))#生成指定范围内的随机整数N。 a<=N<=b
print(random.random())#生成随机浮点数 [0.0, 1.0).
print(random.getrandbits(5))# 生成指定bit位数的随机数
10
0.45699859741584814
31
三、日期时间
1. datetime模块
- date 处理日期(有年月日属性)
- time 处理时间 (有时分秒属性)
- datetime 处理日期与时间 (有年月日时分秒属性)
import datetime
# 构造日期
birth = datetime.date(2019,8,21)# <10的月份,前面不加0
# 构造时间
t = datetime.time(10,1,20)# 时分秒
# 构造日期与时间
t2 = datetime.datetime(2019,8,21,7,30,0)
now = datetime.datetime.now()# 年月日时分秒
print('构造日期:',birth)
print('年:',birth.year)
print('构造时间:',t)
print('时:',t.hour)
print('构造日期与时间:',t2)
print('自带的此时时间:',now)
构造日期: 2019-08-21
年: 2019
构造时间: 10:01:20
时: 10
构造日期与时间: 2019-08-21 07:30:00
自带的此时时间: 2019-08-21 20:17:36.400167
2. 格式转换
- 字符串转到日期
t = datetime.datetime.strptime(s,‘%Y-%m-%d’) - 日期转到字符串
s=now.strftime(‘%Y-%m-%d’)
# 字符串转时间
s = '2019-8-21'
t = datetime.datetime.strptime(s,'%Y-%m-%d')
print('字符串 ',s)
print('转后的时间 ',t)
#时间转字符串
now = datetime.datetime.now()
print('时间 ',now)
s_now = now.strftime('%Y~%m~%d')
print('转后的字符串 ',s_now)
字符串 2019-8-21
转后的时间 2019-08-21 00:00:00
时间 2019-08-21 20:07:52.090167
转后的字符串 2019~08~21
- 占位符
%Y 四位年份
%y 二位年份
%m 二位月份
%d 二位日期
%H 二位小时
%M 二位分钟
%S 二位秒数
%f 微秒
3. 时间差 timedelta
days
seconds
- 计算时间差
t1 = datetime.datetime(1919,1,1,7,30,0)
t2 = datetime.datetime(2019,8,21,7,30,30)
diff = t2-t1
print(diff)
print('相减后日期',diff.days)
print('相减后秒',diff.seconds)
print('相减days*24+seconds',diff.total_seconds())
36757 days, 0:00:30
相减后日期 36757
相减后秒 30
相减days*24+seconds 3175804830.0
- 时间前移、后退
t1 = datetime.date(2019,8,21)
print('当前时间 ',t1)
t2 = t1 + datetime.timedelta(days=-15)# 前移
print('前移15天',t2)
t3 = t1 + datetime.timedelta(days=26)# 后移
print('往后26天',t3)
当前时间 2019-08-21
前移15天 2019-08-06
往后26天 2019-09-16