生成带替换的随机整数列表的最佳方法

我能够使用 for 循环生成带有替换的随机整数列表,但它看起来很冗长,并且必须有一种更优雅的方法来使用纯 python 或不使用random循环来执行此操作。是否有更优化的解决方案可以产生rand_list以下结果,而无需在每个循环上附加?


import random


rand_list = [] 


for x in range(100):


    r = random.choice([1,2,3,4,5])

    rand_list.append(r)


慕码人2483693
浏览 162回答 5
5回答

潇湘沐

我相信您需要使用随机包中的函数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。

芜湖不芜

使用random.choices:from random import choices rand_list = choices(range(1,6),k=100)这k是随机数的数量。

饮歌长啸

random.choices正是您所需要的:from random import choices rand_list = choices(range(1, 6), k=100)

蝴蝶不菲

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

慕虎7371278

你可以使用理解rand_list = [(random.randrange(5) + 1) for x in range(100)]如果您有较重的函数(可能是复杂的哈希或返回极大的值),则可以使用生成器延迟值的创建。这可以节省内存并允许在创建整个列表之前进行处理。您可以在对值进行计数后中断,或者如果只需要特定数量(而不是连续过程),则可以迭代其中的一部分。import itertoolsimport randomdef gen():    while True:        yield random.randrange(5) + 1max_iterations = 100for value in itertools.islice(gen(), max_iterations):    do_some_opertation(value)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python