python随机取值方法_python 从list中随机取值的方法

第一种方法(推荐)

适用于随机取一个值, 返回一个值

import random

list1 = ['佛山', '南宁', '北海', '杭州', '南昌', '厦门', '温州']

a = random.choice(list1)

print(a)

# 返回一个值

第二种方法

适用于随机取一组值, 返回一个list

import random

list1 = ['佛山', '南宁', '北海', '杭州', '南昌', '厦门', '温州']

# 随机返回只有一个值的list

a = random.sample(list1, 1)

# 随机返回只有一个值的list

b = random.sample(list1, 3)

print(a)

print(b)

# 返回list

第三种方法(不推荐,效率太慢)

自写的方法

import random

list1 = ['佛山', '南宁', '北海', '杭州', '南昌', '厦门', '温州']

ln = len(list1)

a = list1[random.randint(0, ln)]

print(a)

第四种方法(特殊场景)

这里的特殊场景举例说明:

抽奖: 从10个人随机抽出1个有奖的, 按随机分配, 每个人的概率都是十分之一, 但是否可以在代码层面, 让某个人的概率更高些呢?

答案当然是可以的了

上码:

In [1]: import random

# 这里给李四个权重为1,看看有什么结果

In [2]: a = {"张三": 0, "李四":1, "王五":0, "赵七": 0, "钱八": 0}

# 取5次, 每次都是李四,

In [3]: random.choices(list(a.keys()), weights=list(a.values()), k=5)

Out[3]: ['李四', '李四', '李四', '李四', '李四']

# 取1次, 当然就是李四了

In [4]: random.choices(list(a.keys()), weights=list(a.values()), k=1)

Out[4]: ['李四']

# 改下权重:李四和赵七都为1

In [5]: a = {"张三": 0, "李四":1, "王五":0, "赵七": 1, "钱八": 0}

# 取5次,也就是李四和赵七两个人, 没有其它人什么事了

In [6]: random.choices(list(a.keys()), weights=list(a.values()), k=5)

Out[6]: ['李四', '李四', '李四', '赵七', '李四']

In [7]: random.choices(list(a.keys()), weights=list(a.values()), k=5)

Out[7]: ['赵七', '李四', '李四', '李四', '赵七']

In [8]: random.choices(list(a.keys()), weights=list(a.values()), k=5)

Out[8]: ['李四', '赵七', '李四', '李四', '赵七']

# 再改一下, 每个人的权重都不一样,

In [9]: a = {"张三": 2, "李四":1, "王五":3, "赵七": 1, "钱八": 4}

# 多执行几次, 会发现每个人都可能会出现, 只是出现的概率完全不一样了, 钱八出现次数最多.

In [10]: random.choices(list(a.keys()), weights=list(a.values()), k=2)

Out[10]: ['王五', '赵七']

In [11]: random.choices(list(a.keys()), weights=list(a.values()), k=2)

Out[11]: ['王五', '王五']

到此这篇关于python 从list中随机取值的方法的文章就介绍到这了,更多相关python list随机取值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-11-13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值