溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python如何實現(xiàn)隨機取list中值

發(fā)布時間:2020-11-17 14:36:44 來源:億速云 閱讀:207 作者:Leah 欄目:開發(fā)技術(shù)

利用python如何實現(xiàn)隨機取list中值?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

第一種方法(推薦)

適用于隨機取一個值, 返回一個值

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
# 這里給李四個權(quán)重為1,看看有什么結(jié)果
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]: ['李四']
# 改下權(quán)重:李四和趙七都為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]: ['李四', '趙七', '李四', '李四', '趙七']
# 再改一下, 每個人的權(quán)重都不一樣, 
In [9]: a = {"張三": 2, "李四":1, "王五":3, "趙七": 1, "錢八": 4}
# 多執(zhí)行幾次, 會發(fā)現(xiàn)每個人都可能會出現(xiàn), 只是出現(xiàn)的概率完全不一樣了, 錢八出現(xiàn)次數(shù)最多.
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]: ['王五', '王五']

看完上述內(nèi)容,你們掌握利用python如何實現(xiàn)隨機取list中值的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI