reandom:随机数获取
random.random():获取[0.0,1.0)之间内的随机浮点数。
print(random.random())# 不包含1,取不到1.0
random.randint(a,b):获取指定[a,b]区间内的随机整数。
print(random.randint(3, 5))# 随机获取3到5之间的整数,可以取到3和5
random.uniform(a,b):获取[a,b)范围内的随机浮点数。
print(random.uniform(3, 5))# 随机获取3到5(不包含5)之间的随机浮点数
random.shuffle(x):混洗,把参数所包含的元素进行打乱,x必须为可变数据类型。
list1 = list(range(10))
random.shuffle(list1)
print(list1)
random.sample(x,k):随机取样,从x中随机抽取k个数据,组成一个列表返回。
random.choice(x):从x(元组或列表)中随机抽取一个元素
# tuple元组是不可变数据类型,可以通过random.sample()函数实现打乱顺序
tup = tuple(range(10))
print(random.choice(tup))# 从tup中随机抽取一个元素返回
lst = random.sample(tup, len(tup)) # 从tup中提取全部元素进行随机排序,返回一个列表
print(lst)
# 此功能一般用于在某个序列内随机取样。
random.choices(population,weights=None,*,cum_weights=None,k=1):从指定序列中随机抽取k次数据,返回一个列表,可以设置权重
population:集群。
weights:相对权重。
cum_weights:累加权重。
k:选取次数。
注意:每次选取都不会影响原序列,每一次选取都是基于原序列
import random
a = [1,2,3,4,5]
print(random.choices(a,k=6))
解析:重复6次从列表a中的各个成员中选取一个数输出,各个成员出现概率基本持平。
结果:[5, 4, 5, 4, 1, 3](随机生成的)
print(random.choices(a,weights=[0,0,1,0,0],k=6))
解析:重复6次从列表a中提取3,最终得到[3, 3, 3, 3, 3, 3]
结果:[3, 3, 3, 3, 3, 3](固定结果)
print(random.choices(a,weights=[1,1,1,1,1],k=6))
解析:重复6次从列表a中的各个成员中选取一个数输出,各个成员出现概率基本持平。
结果:[5, 4, 3, 5, 4, 3](随机生成的)
print(random.choices(a,cum_weights=[1,1,1,1,1],k=6))
结果:[1, 1, 1, 1, 1, 1](固定结果)
参数weights设置相对权重,它的值是一个列表,设置之后,每一个成员被抽取到的概率就被确定了。
比如weights=[1,2,3,4,5],那么第一个成员的概率就是P=1/(1+2+3+4+5)=1/15。
cum_weights设置累加权重,Python会自动把相对权重转换为累加权重,即如果你直接给出累加权重,那么就不需要给出相对权重,且Python省略了一步执行。
比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]
这也就不难理解为什么cum_weights=[1,1,1,1,1]输出全是第一个成员1了。
time:和时间相关
这个模块封装了获取时间戳和字符串形式时间的一些方法。
时间戳:从时间元年(1970年1月1日0点0分0秒)到现在经过的秒数。print(time.time())
获取结构化时间对象:time.gmtime() 默认参数是当前系统时间的时间戳
print(time.gmtime())# 当前系统时间的格林尼治时间戳
>>>time.struct_time(tm_year=2020, tm_mon=12, tm_mday=4, tm_hour=8, tm_min=35, tm_sec=17, tm_wday=4, tm_yday=339, tm_isdst=0)
print(time.gmtime(1))# 获取时间元年后1秒的时间戳
>>>time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)
获取结构化本地时间对象:time.localtime()
用法与gmtime()方法一样,但获取得到的是当前时区的时间戳。
格式化时间对象和字符串之间的转换:
把格式化时间对象转换成字符串:time.strftime(字符串格式,时间戳)
s = time.strftime("%Y-%m-%d %H:%M:%S"