您好,登錄后才能下訂單哦!
利用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中值的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。