Python:如何创建一个由随机数组成的长度增加的列表列表?

时间:2016-10-20 16:15:15

标签: python list random

假设我有一个名为masterlist的200个正,唯一,随机整数的列表。

我想生成一个名为container的10个列表的列表,以便:l1有2个来自masterlist的随机数,不包括重复项; l2有4个元素,l3有6个元素,依此类推。

我知道我可以像这样创建我的container列表:

comb=[[] for i in range(10)]

我可以使用random.choice()从列表中选择一个随机值。

嵌套这10个列表的填充过程的最好的Pythonic方法是什么,这样我创建一个列表,附加正确数量的值来检查没有重复,然后继续下一个?

修改

这是我的尝试:

comb=[[] for i in range(10)]
for j in range(1,11):
    for k in range(0,2*j):
        comb[j][k].append(random.choice(masterlist))

这有什么问题?

1 个答案:

答案 0 :(得分:4)

这应该可以解决问题:

import random

masterlist = [i for i in range(200)]  # For example

container = [
    random.sample(masterlist, l)
    for l in range(2, 21, 2)
]

容器由列表推导组成,使用l调用将变量range()设置为2,4,6 ... 18,20。在每个循环中'在理解中,内置的random.sample()调用会执行您未经替换的抽样。