1. 程式人生 > 程式設計 >python 從list中隨機取值的方法

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()),k=1)
Out[4]: ['李四']
# 改下權重:李四和趙七都為1
In [5]: a = {"張三": 0,"趙七": 1,也就是李四和趙七兩個人,沒有其它人什麼事了
In [6]: random.choices(list(a.keys()),k=5)
Out[6]: ['李四','趙七','李四']

In [7]: random.choices(list(a.keys()),k=5)
Out[7]: ['趙七','趙七']

In [8]: random.choices(list(a.keys()),k=5)
Out[8]: ['李四','趙七']
# 再改一下,每個人的權重都不一樣,In [9]: a = {"張三": 2,"王五":3,"錢八": 4}
# 多執行幾次,會發現每個人都可能會出現,只是出現的概率完全不一樣了,錢八出現次數最多.
In [10]: random.choices(list(a.keys()),k=2)
Out[10]: ['王五','趙七']

In [11]: random.choices(list(a.keys()),k=2)
Out[11]: ['王五','王五']

到此這篇關於python 從list中隨機取值的方法的文章就介紹到這了,更多相關python list隨機取值內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!