python随机取值⽅法_python从list中随机取值的⽅法第⼀种⽅法(推荐)
适⽤于随机取⼀个值, 返回⼀个值
import random
list1 = ['佛⼭', '南宁', '北海', '杭州', '南昌', '厦门', '温州']
a = random.choice(list1)
print(a)
# 返回⼀个值
第⼆种⽅法
适⽤于随机取⼀组值, 返回⼀个list
import random
list1 = ['佛⼭', '南宁', '北海', '杭州', '南昌', '厦门', '温州']
# 随机返回只有⼀个值的list
random python
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随机取值内容请搜索我们以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持我们!
本⽂标题: python 从list中随机取值的⽅法