亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

生成帶替換的隨機整數列表的最佳方法

生成帶替換的隨機整數列表的最佳方法

慕碼人2483693 2023-12-12 15:07:23
我能夠使用 for 循環生成帶有替換的隨機整數列表,但它看起來很冗長,并且必須有一種更優雅的方法來使用純 python 或不使用random循環來執行此操作。是否有更優化的解決方案可以產生rand_list以下結果,而無需在每個循環上附加?import randomrand_list = [] for x in range(100):    r = random.choice([1,2,3,4,5])    rand_list.append(r)
查看完整描述

5 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

我相信您需要使用隨機包中的函數choices,您只是缺少“s”!此外,您還需要添加k參數來說明您想要采樣多少個值:

values = [1,2,3,4,5]
print(random.choices(values,k=10))

輸出:

[2, 1, 4, 2, 2, 4, 1, 2, 1, 4]

在您的示例中,您需要將 k 固定為 100。


查看完整回答
反對 回復 2023-12-12
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

使用random.choices

from random import choices

rand_list = choices(range(1,6),k=100)

k是隨機數的數量。


查看完整回答
反對 回復 2023-12-12
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

random.choices正是您所需要的:

from?random?import?choices

rand_list?=?choices(range(1,?6),?k=100)


查看完整回答
反對 回復 2023-12-12
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

print(list(random.choices([1, 2, 3, 4, 5], k=100)))



查看完整回答
反對 回復 2023-12-12
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

你可以使用理解

rand_list?=?[(random.randrange(5)?+?1)?for?x?in?range(100)]

如果您有較重的函數(可能是復雜的哈?;蚍祷貥O大的值),則可以使用生成器延遲值的創建。這可以節省內存并允許在創建整個列表之前進行處理。您可以在對值進行計數后中斷,或者如果只需要特定數量(而不是連續過程),則可以迭代其中的一部分。

import itertools

import random


def gen():

? ? while True:

? ? ? ? yield random.randrange(5) + 1


max_iterations = 100


for value in itertools.islice(gen(), max_iterations):

? ? do_some_opertation(value)


查看完整回答
反對 回復 2023-12-12
  • 5 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號