在python中根据给定的块大小随机拆分列表

2024-06-28 19:14:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个函数,返回一个随机分割块的列表,给定每个块的大小列表。例如,假设我有一个从0到9的唯一整数列表

lst = list(range(10))

我想分成大小为1、2、2和5的4个块,因此该函数应采用如下输入变量sizes

my_func(lst, sizes=[1, 2, 2, 5])

我希望函数返回如下内容

[[3], [1, 7], [2, 4], [0, 5, 6, 8, 9]]

如果输入sizes = [5, 1, 4],我希望函数按如下顺序返回

[[1, 3, 4, 6, 8], [9], [0, 2, 5, 7]]

有什么建议吗


Tags: 函数内容列表顺序myrange整数建议
2条回答

我的方法是使用^{},然后遍历洗牌数组

import random
def my_func(lst, sizes):
    random.shuffle(lst)
    ret = []
    pointer = 0
    for s in sizes:
        ret.append(lst[pointer:pointer+s])
        pointer+=s
    return ret

lst = list(range(10))
print(my_func(lst, sizes = [1, 2, 2, 5]))
print(my_func(lst, sizes = [5, 1, 4]))
[[5], [6, 7], [4, 0], [8, 3, 9, 2, 1]]
[[5, 2, 4, 3, 0], [8], [6, 7, 9, 1]]

您可以这样做:

import random

lis=[]
g_lis=[]

for i in sizes:
    list_int = i

    for j in range(list_int):
        num = random.randint(0,9)
        lis.append(num)

    g_lis.append(lis)

相关问题 更多 >